src/main/java/de/unixwork/uwproj/Main.java

Fri, 06 Oct 2023 19:35:07 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 06 Oct 2023 19:35:07 +0200
changeset 81
ea79a383ad75
parent 67
e43d30273f74
child 90
a13789dd1cfb
permissions
-rw-r--r--

add command line options - fixes #303

0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 package de.unixwork.uwproj;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 import org.apache.velocity.VelocityContext;
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4 import org.apache.velocity.app.VelocityEngine;
42
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
5 import org.slf4j.LoggerFactory;
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
6
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
7 import java.io.*;
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
8
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
9 public class Main {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
10
81
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
11 public final static String IN_FILE_DEFAULT = "make/project.xml";
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
12 public final static String TPL_FILE_DEFAULT = "make/configure.vm";
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
13 public final static String OUT_FILE_DEFAULT = "configure";
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
14
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
15 static Project loadProjectFile(String fileName) {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
16 try {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
17 return new Project(new File(fileName));
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
18 } catch (Exception e) {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
19 throw new RuntimeException(e);
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
20 }
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
21 }
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
23 static void writeConfigureScript(Writer out, String tplFileName, Project project) {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
24 var context = new VelocityContext();
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
25 context.put("targets", project.getTargets());
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
26 context.put("namedDependencies", project.getNamedDependencies());
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
27 context.put("dependencies", project.getDependencies());
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
28 context.put("options", project.getOptions());
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
29 context.put("features", project.getFeatures());
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
30 context.put("project", project);
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
31 context.put("vars", project.getVars());
67
e43d30273f74 check compilers before any dependency checks
Olaf Wintermann <olaf.wintermann@gmail.com>
parents: 42
diff changeset
32 context.put("languages", project.getLang());
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
33 new VelocityEngine().getTemplate(tplFileName).merge(context, out);
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
34 }
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
35
81
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
36 private static void printUsage() {
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
37 System.err.println("Usage: uwproj [OPTIONS]");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
38 System.err.println();
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
39 System.err.println("OPTIONS:");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
40 System.err.println(" -h --help Print help text and exit");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
41 System.err.println(" -o --output <file> Path to the output file");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
42 System.err.printf(" (default: %s)\n", OUT_FILE_DEFAULT);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
43 System.err.println(" -p --project <file> Path to the project.xml file");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
44 System.err.printf(" (default: %s)\n", IN_FILE_DEFAULT);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
45 System.err.println(" -t --template <file> Path to the velocity template");
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
46 System.err.printf(" (default: %s)\n", TPL_FILE_DEFAULT);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
47 }
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
48
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
49 private static void checkOneMoreArg(int i, int length) {
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
50 if (i+1 >= length) {
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
51 printUsage();
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
52 System.exit(1);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
53 }
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
54 }
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
55
42
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
56 public static void main(String[] args) {
81
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
57 var inFileName = IN_FILE_DEFAULT;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
58 var tplFileName = TPL_FILE_DEFAULT;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
59 var outFileName = OUT_FILE_DEFAULT;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
60
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
61 for (int i = 0 ; i < args.length ; i++) {
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
62 switch (args[i]) {
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
63 case "-o":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
64 case "--output":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
65 checkOneMoreArg(i, args.length);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
66 outFileName = args[++i];
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
67 break;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
68 case "-p":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
69 case "--project":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
70 checkOneMoreArg(i, args.length);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
71 inFileName = args[++i];
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
72 break;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
73
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
74 case "-t":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
75 case "--template":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
76 checkOneMoreArg(i, args.length);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
77 tplFileName = args[++i];
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
78 break;
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
79 case "--help":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
80 case "-h":
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
81 printUsage();
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
82 System.exit(0);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
83 default:
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
84 printUsage();
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
85 System.exit(1);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
86 }
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
87 }
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
88
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
89 System.out.println("In: " + inFileName);
ea79a383ad75 add command line options - fixes #303
Mike Becker <universe@uap-core.de>
parents: 67
diff changeset
90 System.out.println("Tpl: " + tplFileName);
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
91
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
92 try (var out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFileName)))) {
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
93 writeConfigureScript(out, tplFileName, loadProjectFile(inFileName));
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94 } catch (Exception ex) {
42
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
95 LoggerFactory.getLogger(Main.class).error(
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
96 "Uncaught Exception",
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
97 ex
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
98 );
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99 }
39
3ca85da78515 add RegressionTest - fixes #264
Mike Becker <universe@uap-core.de>
parents: 7
diff changeset
100
42
becfbf7af928 add simple SLF4J provider - fixes #292
Mike Becker <universe@uap-core.de>
parents: 39
diff changeset
101 System.out.println("Out: " + outFileName);
0
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 }
38775db5fdf5 add existing source
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103 }

mercurial