mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-12 17:07:55 -04:00
rewrite MinosoftCommandLineArguments, improvement
This commit is contained in:
parent
2802f5506f
commit
050ff874a2
@ -14,17 +14,14 @@
|
||||
package de.bixilon.minosoft.data.entities;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import de.bixilon.minosoft.data.mappings.ModIdentifier;
|
||||
|
||||
public class EntityInformation {
|
||||
private final String mod;
|
||||
private final String identifier;
|
||||
|
||||
public class EntityInformation extends ModIdentifier {
|
||||
private final float width;
|
||||
private final float height;
|
||||
|
||||
public EntityInformation(String mod, String identifier, float width, float height) {
|
||||
this.mod = mod;
|
||||
this.identifier = identifier;
|
||||
super(mod, identifier);
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
}
|
||||
@ -33,14 +30,6 @@ public class EntityInformation {
|
||||
return new EntityInformation(mod, identifier, data.get("width").getAsFloat(), data.get("height").getAsFloat());
|
||||
}
|
||||
|
||||
public String getMod() {
|
||||
return mod;
|
||||
}
|
||||
|
||||
public String getIdentifier() {
|
||||
return identifier;
|
||||
}
|
||||
|
||||
public float getWidth() {
|
||||
return width;
|
||||
}
|
||||
|
@ -16,57 +16,54 @@ package de.bixilon.minosoft.util;
|
||||
import de.bixilon.minosoft.config.StaticConfiguration;
|
||||
import org.apache.commons.cli.*;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class MinosoftCommandLineArguments {
|
||||
private static final HashMap<Option, CommandLineArgumentHandler> optionHashMap = new HashMap<>();
|
||||
private static final Options options = new Options();
|
||||
private static final HelpFormatter formatter = new HelpFormatter();
|
||||
|
||||
static {
|
||||
registerDefaultArguments();
|
||||
}
|
||||
|
||||
public static void parseCommandLineArguments(String[] args) {
|
||||
Options options = new Options();
|
||||
|
||||
Option help = new Option("?", "help", false, "Displays this help");
|
||||
options.addOption(help);
|
||||
|
||||
Option homeFolder = new Option("home_folder", true, "Home of Minosoft");
|
||||
options.addOption(homeFolder);
|
||||
|
||||
Option coloredLog = new Option("colored_log", true, "Should the log be colored");
|
||||
options.addOption(coloredLog);
|
||||
|
||||
Option verboseEntityLogLevel = new Option("verbose_entity_logging", true, "Should entity meta data be printed");
|
||||
options.addOption(verboseEntityLogLevel);
|
||||
|
||||
Option relativeTimeLogging = new Option("log_time_relativ", true, "Should time in log timestamp be relative");
|
||||
options.addOption(relativeTimeLogging);
|
||||
|
||||
HelpFormatter formatter = new HelpFormatter();
|
||||
CommandLine commandLine;
|
||||
MinosoftCommandLineArguments.optionHashMap.forEach((option, commandLineArgumentHandler) -> options.addOption(option));
|
||||
|
||||
|
||||
try {
|
||||
commandLine = new DefaultParser().parse(options, args);
|
||||
CommandLine commandLine = new DefaultParser().parse(options, args);
|
||||
|
||||
for (Option option : commandLine.getOptions()) {
|
||||
if (!MinosoftCommandLineArguments.optionHashMap.containsKey(option)) {
|
||||
continue;
|
||||
}
|
||||
MinosoftCommandLineArguments.optionHashMap.get(option).handle(option.getValue());
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
System.out.println(e.getMessage());
|
||||
formatter.printHelp("java -jar Minosoft.jar", options);
|
||||
|
||||
System.exit(1);
|
||||
return;
|
||||
}
|
||||
if (commandLine.hasOption(help.getOpt())) {
|
||||
}
|
||||
|
||||
public static void registerCommandLineOption(Option option, CommandLineArgumentHandler handler) {
|
||||
optionHashMap.put(option, handler);
|
||||
}
|
||||
|
||||
private static void registerDefaultArguments() {
|
||||
registerCommandLineOption(new Option("?", "help", false, "Displays this help"), (value -> {
|
||||
formatter.printHelp("java -jar Minosoft.jar", options);
|
||||
System.exit(1);
|
||||
return;
|
||||
}
|
||||
if (commandLine.hasOption(homeFolder.getOpt())) {
|
||||
StaticConfiguration.HOME_DIRECTORY = commandLine.getOptionValue(homeFolder.getOpt());
|
||||
}
|
||||
if (commandLine.hasOption(coloredLog.getOpt())) {
|
||||
StaticConfiguration.COLORED_LOG = Boolean.parseBoolean(commandLine.getOptionValue(coloredLog.getOpt()));
|
||||
}
|
||||
if (commandLine.hasOption(verboseEntityLogLevel.getOpt())) {
|
||||
StaticConfiguration.VERBOSE_ENTITY_META_DATA_LOGGING = Boolean.parseBoolean(commandLine.getOptionValue(verboseEntityLogLevel.getOpt()));
|
||||
}
|
||||
if (commandLine.hasOption(relativeTimeLogging.getOpt())) {
|
||||
StaticConfiguration.LOG_RELATIVE_TIME = Boolean.parseBoolean(commandLine.getOptionValue(relativeTimeLogging.getOpt()));
|
||||
}
|
||||
|
||||
}));
|
||||
registerCommandLineOption(new Option("home_folder", true, "Home of Minosoft"), (value -> StaticConfiguration.HOME_DIRECTORY = value + "/"));
|
||||
registerCommandLineOption(new Option("colored_log", true, "Should the log be colored"), (value -> StaticConfiguration.COLORED_LOG = Boolean.parseBoolean(value)));
|
||||
registerCommandLineOption(new Option("verbose_entity_logging", true, "Should entity meta data be printed"), (value -> StaticConfiguration.VERBOSE_ENTITY_META_DATA_LOGGING = Boolean.parseBoolean(value)));
|
||||
registerCommandLineOption(new Option("log_time_relativ", true, "Should time in log timestamp be relative"), (value -> StaticConfiguration.LOG_RELATIVE_TIME = Boolean.parseBoolean(value)));
|
||||
}
|
||||
|
||||
public interface CommandLineArgumentHandler {
|
||||
void handle(@Nullable String value);
|
||||
}
|
||||
}
|
||||
|
@ -227,15 +227,15 @@ public final class Util {
|
||||
|
||||
public static void downloadFile(String url, String destination) throws IOException {
|
||||
createParentFolderIfNotExist(destination);
|
||||
copyFile(getInputStreamByURL(url), new FileOutputStream(destination));
|
||||
copyStream(getInputStreamByURL(url), new FileOutputStream(destination));
|
||||
}
|
||||
|
||||
public static void downloadFileAsGz(String url, String destination) throws IOException {
|
||||
createParentFolderIfNotExist(destination);
|
||||
copyFile(getInputStreamByURL(url), new GZIPOutputStream(new FileOutputStream(destination)));
|
||||
copyStream(getInputStreamByURL(url), new GZIPOutputStream(new FileOutputStream(destination)));
|
||||
}
|
||||
|
||||
public static void copyFile(InputStream inputStream, OutputStream output) throws IOException {
|
||||
public static void copyStream(InputStream inputStream, OutputStream output) throws IOException {
|
||||
byte[] buffer = new byte[ProtocolDefinition.DEFAULT_BUFFER_SIZE];
|
||||
int length;
|
||||
while ((length = inputStream.read(buffer, 0, buffer.length)) != -1) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user