Fri, 06 Oct 2023 19:35:07 +0200
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 | } |