129 lines
3.9 KiB
Java
129 lines
3.9 KiB
Java
package com.gabongao.jvm;
|
||
|
||
import org.apache.commons.cli.*;
|
||
|
||
/**
|
||
* ┏┓ ┏┓+ +
|
||
* ┏┛┻━━━┛┻┓ + +
|
||
* ┃ ┃
|
||
* ┃ ━ ┃ ++ + + +
|
||
* ████━████ ┃+
|
||
* ┃ ┃ +
|
||
* ┃ ┻ ┃
|
||
* ┃ ┃ + +
|
||
* ┗━┓ ┏━┛
|
||
* ┃ ┃
|
||
* ┃ ┃ + + + +
|
||
* ┃ ┃ Code is far away from bug with the animal protecting
|
||
* ┃ ┃ + 神兽保佑,代码无bug
|
||
* ┃ ┃
|
||
* ┃ ┃ +
|
||
* ┃ ┗━━━┓ + +
|
||
* ┃ ┣┓
|
||
* ┃ ┏┛
|
||
* ┗┓┓┏━┳┓┏┛ + + + +
|
||
* ┃┫┫ ┃┫┫
|
||
* ┗┻┛ ┗┻┛+ + + +
|
||
* Created by Imgaojp on 2017/2/16.
|
||
*/
|
||
public class Cmd {
|
||
|
||
boolean helpFlag = false;
|
||
boolean versionFlag = false;
|
||
String cpOption = "";
|
||
String className = "";
|
||
String jreOption = "";
|
||
String[] args;
|
||
|
||
/**
|
||
* getter
|
||
*
|
||
* @return
|
||
*/
|
||
public boolean isHelpFlag() {
|
||
return helpFlag;
|
||
}
|
||
|
||
public boolean isVersionFlag() {
|
||
return versionFlag;
|
||
}
|
||
|
||
public String getCpOption() {
|
||
return cpOption;
|
||
}
|
||
|
||
public String getClassName() {
|
||
return className;
|
||
}
|
||
|
||
public String[] getArgs() {
|
||
return args;
|
||
}
|
||
|
||
public String getJreOption() {
|
||
return jreOption;
|
||
}
|
||
|
||
/**
|
||
* reset properties
|
||
*/
|
||
public void reset() {
|
||
this.helpFlag = false;
|
||
this.versionFlag = false;
|
||
this.cpOption = "";
|
||
this.className = "";
|
||
this.args = null;
|
||
this.jreOption = "";
|
||
}
|
||
|
||
/**
|
||
* ParseCmd
|
||
*
|
||
* @param args
|
||
* @throws Exception
|
||
*/
|
||
public void parseCmd(String[] args) throws Exception {
|
||
CommandLineParser parser = new BasicParser();
|
||
Options options = new Options();
|
||
options.addOption("version", false, "print version and exit");
|
||
options.addOption("?", "help", false, "print help message");
|
||
options.addOption("cp", "classpath", true, "classpath");
|
||
options.addOption("jreOption", true, "path to jre");
|
||
CommandLine commandLine = parser.parse(options, args);
|
||
if (commandLine.hasOption("help") || commandLine.hasOption("?")) {
|
||
this.helpFlag = true;
|
||
}
|
||
if (commandLine.hasOption("version")) {
|
||
this.versionFlag = true;
|
||
}
|
||
|
||
if (commandLine.hasOption("cp")) {
|
||
this.cpOption = commandLine.getOptionValue("cp");
|
||
} else if (commandLine.hasOption("classpath")) {
|
||
this.cpOption = commandLine.getOptionValue("classpath");
|
||
}
|
||
|
||
if (commandLine.hasOption("jreOption")) {
|
||
this.jreOption = commandLine.getOptionValue("jreOption");
|
||
}
|
||
String[] commandLineArgs = commandLine.getArgs();
|
||
if (commandLineArgs.length > 0) {
|
||
this.className = commandLineArgs[0];
|
||
}
|
||
if (commandLineArgs.length > 1) {
|
||
this.args = new String[commandLineArgs.length - 1];
|
||
System.arraycopy(commandLineArgs, 1, this.args, 0, commandLineArgs.length - 1);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* print usage
|
||
*
|
||
* @param args
|
||
*/
|
||
public static void printUsage(String[] args) {
|
||
System.out.println("Usage: java [-options] class [args...]\n");
|
||
}
|
||
|
||
}
|