Skip to content

Commit 9a6ab75

Browse files
committed
Added the ability to generate a new module-info.json5 file via the -n flag
1 parent 693d4fd commit 9a6ab75

File tree

2 files changed

+87
-17
lines changed

2 files changed

+87
-17
lines changed

src/main/java/com/chaoticsomeone/ModInfGen/ModuleInfoGenerator.java

Lines changed: 77 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
import com.chaoticsomeone.ModInfGen.model.OpensDeclaration;
55
import com.google.gson.Gson;
66

7-
import java.io.BufferedReader;
8-
import java.io.FileReader;
9-
import java.io.IOException;
7+
import java.io.*;
108
import java.util.regex.Matcher;
119
import java.util.regex.Pattern;
1210

@@ -17,31 +15,83 @@ public class ModuleInfoGenerator {
1715

1816
private final Gson gson = new Gson();
1917
private final String configFilePath = "module-info.json5";
20-
private final ModuleInfo moduleInfo;
2118

22-
private final boolean collapseWhitespaces;
19+
private boolean collapseWhitespaces;
2320

2421
public ModuleInfoGenerator(boolean collapseWhitespaces) {
2522
this.collapseWhitespaces = collapseWhitespaces;
23+
}
24+
25+
public ModuleInfoGenerator() {
26+
this(false);
27+
}
2628

27-
moduleInfo = gson.fromJson(readJsonString(configFilePath), ModuleInfo.class);
29+
public void generate() {
30+
ModuleInfo moduleInfo = gson.fromJson(readJsonString(configFilePath), ModuleInfo.class);
2831

2932
try {
3033
moduleInfo.validateVariables();
3134
moduleInfo.expandVariables();
3235
moduleInfo.expandRoot();
3336

34-
System.out.println(generateModuleInfoContent());
37+
System.out.println(generateModuleInfoContent(moduleInfo));
3538
} catch (IllegalArgumentException e) {
3639
e.printStackTrace();
3740
}
3841
}
3942

40-
public ModuleInfoGenerator() {
41-
this(false);
43+
public void generateTemplate() {
44+
File outputFile = new File(configFilePath);
45+
46+
if (outputFile.exists()) {
47+
return;
48+
}
49+
50+
SmartStringBuilder outputBuilder = new SmartStringBuilder();
51+
52+
outputBuilder.appendLn("{");
53+
outputBuilder.alterIndent(1);
54+
55+
outputBuilder.appendLn("\"module\": \"\",");
56+
outputBuilder.appendLn("\"source-root\": \"\",\n");
57+
58+
outputBuilder.appendLn("\"variables\": {");
59+
outputBuilder.appendLn("},\n");
60+
61+
outputBuilder.appendLn("\"requires\": [");
62+
outputBuilder.appendLn("],\n");
63+
64+
outputBuilder.appendLn("\"exports\": [");
65+
outputBuilder.appendLn("],\n");
66+
67+
outputBuilder.appendLn("\"opens\": [");
68+
outputBuilder.appendLn("],\n");
69+
70+
outputBuilder.appendLn("\"legacy\": [");
71+
outputBuilder.appendLn("],\n");
72+
73+
outputBuilder.appendLn("\"comments\": {");
74+
outputBuilder.alterIndent(1);
75+
outputBuilder.appendLn("\"header\": \"\",");
76+
outputBuilder.appendLn("\"footer\": \"\",");
77+
outputBuilder.appendLn("\"requires\": \"\",");
78+
outputBuilder.appendLn("\"exports\": \"\",");
79+
outputBuilder.appendLn("\"opens\": \"\",");
80+
outputBuilder.appendLn("\"legacy\": \"\"");
81+
outputBuilder.alterIndent(-1);
82+
outputBuilder.appendLn("}");
83+
84+
outputBuilder.alterIndent(-1);
85+
outputBuilder.appendLn("}");
86+
87+
try (BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile))) {
88+
bw.write(outputBuilder.toString());
89+
} catch (IOException e) {
90+
e.printStackTrace();
91+
}
4292
}
4393

44-
private String generateModuleInfoContent() {
94+
private String generateModuleInfoContent(ModuleInfo moduleInfo) {
4595
SmartStringBuilder outputBuilder = new SmartStringBuilder();
4696

4797
outputBuilder.appendComment(moduleInfo.getComment("header"), 0, 2);
@@ -87,7 +137,7 @@ private String generateModuleInfoContent() {
87137

88138
outputBuilder.appendComment(moduleInfo.getComment("footer"), 2);
89139

90-
return outputBuilder.toString();
140+
return outputBuilder.toString(true);
91141
}
92142

93143
private String readJsonString(String path) {
@@ -119,17 +169,29 @@ private String readJsonString(String path) {
119169
return matcher.replaceAll("");
120170
}
121171

172+
public boolean isCollapseWhitespaces() {
173+
return collapseWhitespaces;
174+
}
175+
176+
public void setCollapseWhitespaces(boolean collapseWhitespaces) {
177+
this.collapseWhitespaces = collapseWhitespaces;
178+
}
122179

123180
public static void main(String[] args) {
124-
boolean collapseWhitespaces = false;
181+
ModuleInfoGenerator generator = new ModuleInfoGenerator(false);
182+
boolean doGenerate = true;
125183

126184
for (String arg : args) {
127185
if (arg.equalsIgnoreCase("-w")) {
128-
collapseWhitespaces = true;
186+
generator.setCollapseWhitespaces(true);
187+
} else if (arg.equalsIgnoreCase("-n")) {
188+
generator.generateTemplate();
189+
doGenerate = false;
129190
}
130191
}
131192

132-
ModuleInfoGenerator generator = new ModuleInfoGenerator(collapseWhitespaces);
133-
193+
if (doGenerate) {
194+
generator.generate();
195+
}
134196
}
135197
}

src/main/java/com/chaoticsomeone/ModInfGen/SmartStringBuilder.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,17 @@ public void alterIndent(int offset) {
6161
indent = Math.max(0, indent + offset);
6262
}
6363

64+
public String toString(boolean collapseWhitespace) {
65+
if (collapseWhitespace) {
66+
Matcher matcher = Pattern.compile("\t+").matcher(sb.toString());
67+
return matcher.replaceAll("\t");
68+
}
69+
70+
return sb.toString();
71+
}
72+
6473
@Override
6574
public String toString() {
66-
Matcher matcher = Pattern.compile("\t+").matcher(sb.toString());
67-
return matcher.replaceAll("\t");
75+
return toString(false);
6876
}
6977
}

0 commit comments

Comments
 (0)