package com.pugh.sockso; import com.pugh.sockso.resources.Resources; import joptsimple.OptionParser; /** * command line options parsing * */ public class Options { public static final String OPT_NOGUI = "nogui"; public static final String OPT_HELP = "help"; public static final String OPT_LOGTYPE = "logtype"; public static final String OPT_UPNP = "upnp"; public static final String OPT_RESOURCESTYPE = "resourcestype"; public static final String OPT_LOCALE = "locale"; public static final String OPT_QUERY = "query"; public static final String OPT_VERSION = "version"; public static final String OPT_DATADIR = "datadir"; public static final String OPT_IP = "ip"; public static final String OPT_SSL = "ssl"; public static final String OPT_SSL_KEYSTORE = "sslKeystore"; public static final String OPT_SSL_PASSWORD = "sslKeystorePassword"; public static final String OPT_DBTYPE = "dbtype"; public static final String OPT_DBHOST = "dbhost"; public static final String OPT_DBUSER = "dbuser"; public static final String OPT_DBPASS = "dbpass"; public static final String OPT_DBNAME = "dbname"; public static final String OPT_ADMIN = "admin"; /** * returns an options parser to use * * @return * */ public static OptionParser getParser() { final OptionParser parser = new OptionParser(); parser.accepts( OPT_NOGUI, "Run without a GUI" ); parser.accepts( OPT_HELP, "Show help options" ); parser.accepts( OPT_LOGTYPE, "Specify logging type" ) .withRequiredArg().describedAs( "default,dev" ); parser.accepts( OPT_UPNP, "Try UPNP port forwarding" ); parser.accepts( OPT_RESOURCESTYPE, "(dev only) How to fetch resources" ) .withRequiredArg().describedAs( "jar,file" ); parser.accepts( OPT_LOCALE, "language locale" ) .withRequiredArg().describedAs( Resources.DEFAULT_LOCALE ); parser.accepts( OPT_IP, "Fixed IP" ) .withRequiredArg().describedAs( "ipaddress" ); parser.accepts( OPT_QUERY, "SQL query file" ) .withOptionalArg().describedAs( "file.txt" ); parser.accepts( OPT_VERSION, "Print version" ); parser.accepts( OPT_DATADIR, "Data directory" ) .withRequiredArg().describedAs( "full path" ); // // ssl // parser.accepts( OPT_SSL, "Use SSL" ); parser.accepts( OPT_SSL_KEYSTORE, "Path of SSL keystore file" ) .withRequiredArg().describedAs( "keystore file" ); parser.accepts( OPT_SSL_PASSWORD, "SSL keystore password" ) .withRequiredArg().describedAs( "password" ); // // database // parser.accepts( OPT_DBTYPE, "Database type" ) .withRequiredArg().describedAs( "hsql,mysql" ); parser.accepts( OPT_DBHOST, "Database host" ) .withRequiredArg().describedAs( "DNS or IP" ); parser.accepts( OPT_DBUSER, "Database user" ) .withRequiredArg().describedAs( "username" ); parser.accepts( OPT_DBPASS, "Database password" ) .withRequiredArg().describedAs( "password" ); parser.accepts( OPT_DBNAME, "Database name" ) .withRequiredArg().describedAs( "name" ); // // admin // parser.accepts( OPT_ADMIN, "Run in admin mode" ); return parser; } }