Store version, move main to seperate class

This commit is contained in:
comp500 2019-05-16 23:04:56 +01:00
parent 599d86e7b7
commit b3cac7b544
3 changed files with 47 additions and 24 deletions

View File

@ -2,6 +2,7 @@ plugins {
id 'java'
id 'application'
id 'com.github.johnrengelman.shadow' version '5.0.0'
id 'com.palantir.git-version' version '0.11.0'
}
dependencies {
@ -13,12 +14,14 @@ repositories {
jcenter()
}
mainClassName = 'link.infra.packwiz.installer.Main'
mainClassName = 'link.infra.packwiz.installer.RequiresBootstrap'
version gitVersion()
jar {
manifest {
attributes(
'Main-Class': 'link.infra.packwiz.installer.Main'
'Main-Class': 'link.infra.packwiz.installer.RequiresBootstrap',
'Implementation-Version': project.version
)
}
}

View File

@ -10,28 +10,7 @@ import org.apache.commons.cli.ParseException;
public class Main {
public static void main(String[] args) {
Options options = new Options();
options.addOption("g", "no-gui", false, "Don't display a GUI to show update progress");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// Allow any arguments, we're going to exit(1) anyway
cmd = parser.parse(options, args, false);
} catch (ParseException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e.getMessage(), "packwiz-installer", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
if (cmd.hasOption("no-gui")) {
System.out.println("This program must be run through packwiz-installer-bootstrap. Use --bootstrap-no-update to disable updating.");
System.exit(1);
} else {
JOptionPane.showMessageDialog(null, "This program must be run through packwiz-installer-bootstrap. Use --bootstrap-no-update to disable updating.", "packwiz-installer", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}
// Actual main() is in RequiresBootstrap!
public Main(String[] args) {
Options options = new Options();

View File

@ -0,0 +1,41 @@
package link.infra.packwiz.installer;
import java.util.Arrays;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
public class RequiresBootstrap {
public static void main(String[] args) {
// Very small CLI implementation, because Commons CLI complains on unexpected
// options
// Also so that Commons CLI can be excluded from the shaded JAR, as it is
// included in the bootstrap
if (Arrays.stream(args).map(str -> {
if (str == null) return "";
if (str.startsWith("--")) {
return str.substring(2, str.length());
}
if (str.startsWith("-")) {
return str.substring(1, str.length());
}
return "";
}).anyMatch(str -> str.equals("g") || str.equals("no-gui"))) {
System.out.println(
"This program must be run through packwiz-installer-bootstrap. Use --bootstrap-no-update to disable updating.");
System.exit(1);
} else {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
// Ignore the exceptions, just continue using the ugly L&F
}
JOptionPane.showMessageDialog(null,
"This program must be run through packwiz-installer-bootstrap. Use --bootstrap-no-update to disable updating.",
"packwiz-installer", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}
}