excalibur-cli goes into compatibility mode. Here is trial implementation of CLISetup. It has some problems in help message(omit some options).
Index: CLISetup.java =================================================================== RCS file: /home/cvs/avalon-phoenix/src/java/org/apache/avalon/phoenix/frontends/CLISetup.java,v retrieving revision 1.21 diff -u -r1.21 CLISetup.java --- CLISetup.java 22 Feb 2003 05:34:46 -0000 1.21 +++ CLISetup.java 12 Mar 2003 00:46:51 -0000 @@ -7,21 +7,23 @@ */ package org.apache.avalon.phoenix.frontends; -import java.util.List; -import org.apache.avalon.excalibur.cli.CLArgsParser; -import org.apache.avalon.excalibur.cli.CLOption; -import org.apache.avalon.excalibur.cli.CLOptionDescriptor; -import org.apache.avalon.excalibur.cli.CLUtil; import org.apache.avalon.excalibur.i18n.ResourceManager; import org.apache.avalon.excalibur.i18n.Resources; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.phoenix.interfaces.SystemManager; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.OptionBuilder; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.apache.commons.cli.PosixParser; /** * The class prepare parameters based on input options. * - * @author <a href="mailto:peter at apache.org">Peter Donald</a> - * @author <a href="[EMAIL PROTECTED]">Leo Simons</a> + * @author Eung-ju Park */ class CLISetup { @@ -31,28 +33,28 @@ private static final String MANAGER_IMPL = "org.apache.avalon.phoenix.components.manager.DefaultManager"; - private static final int DEBUG_LOG_OPT = 'd'; + private static final String DEBUG_LOG_OPT = "d"; - private static final int HELP_OPT = 'h'; + private static final String HELP_OPT = "h"; - private static final int LOG_FILE_OPT = 'l'; + private static final String LOG_FILE_OPT = "l"; - private static final int APPS_PATH_OPT = 'a'; + private static final String APPS_PATH_OPT = "a"; - private static final int PERSISTENT_OPT = 'p'; + private static final String PERSISTENT_OPT = "p"; - private static final int CONFIGFILE_OPT = 'f'; + private static final String CONFIGFILE_OPT = "f"; - private static final int REMOTE_MANAGER_OPT = 1; + private static final String REMOTE_MANAGER_OPT = "remote-manager"; - private static final int DISABLE_HOOK_OPT = 2; + private static final String DISABLE_HOOK_OPT = "disable-hook"; - private static final int APPLICATION_OPT = 3; + private static final String APPLICATION_OPT = "application"; - ///Parameters created by parsing CLI options + /** Parameters created by parsing CLI options */ private final Parameters m_parameters = new Parameters(); - ///Command used to execute program + /** Command used to execute program */ private final String m_command; public CLISetup( final String command ) @@ -60,150 +62,116 @@ m_command = command; } - /** - * Display usage report. - */ - private void usage( final CLOptionDescriptor[] options ) + public Parameters getParameters() { - System.err.println( m_command ); - System.err.println( "\t" + REZ.getString( "cli.desc.available.header" ) ); - System.err.println( CLUtil.describeOptions( options ) ); + return m_parameters; } /** - * Initialise the options for command line parser. + * Display usage report. */ - private CLOptionDescriptor[] createCLOptions() + private void usage( final Options options ) { - final CLOptionDescriptor options[] = new CLOptionDescriptor[ 9 ]; - options[ 0 ] = - new CLOptionDescriptor( "help", - CLOptionDescriptor.ARGUMENT_DISALLOWED, - HELP_OPT, - REZ.getString( "cli.opt.help.desc" ) ); - options[ 1 ] = - new CLOptionDescriptor( "log-file", - CLOptionDescriptor.ARGUMENT_REQUIRED, - LOG_FILE_OPT, - REZ.getString( "cli.opt.log-file.desc" ) ); - - options[ 2 ] = - new CLOptionDescriptor( "apps-path", - CLOptionDescriptor.ARGUMENT_REQUIRED, - APPS_PATH_OPT, - REZ.getString( "cli.opt.apps-path.desc" ) ); - - options[ 3 ] = - new CLOptionDescriptor( "debug-init", - CLOptionDescriptor.ARGUMENT_DISALLOWED, - DEBUG_LOG_OPT, - REZ.getString( "cli.opt.debug-init.desc" ) ); - - options[ 4 ] = - new CLOptionDescriptor( "remote-manager", - CLOptionDescriptor.ARGUMENT_DISALLOWED, - REMOTE_MANAGER_OPT, - REZ.getString( "cli.opt.remote-manager.desc" ) ); - - options[ 5 ] = - new CLOptionDescriptor( "disable-hook", - CLOptionDescriptor.ARGUMENT_DISALLOWED, - DISABLE_HOOK_OPT, - REZ.getString( "cli.opt.disable-hook.desc" ) ); - - options[ 6 ] = - new CLOptionDescriptor( "application", - CLOptionDescriptor.ARGUMENT_REQUIRED, - APPLICATION_OPT, - REZ.getString( "cli.opt.application.desc" ) ); - - options[ 7 ] = - new CLOptionDescriptor( "persistent", - CLOptionDescriptor.ARGUMENT_DISALLOWED, - PERSISTENT_OPT, - REZ.getString( "cli.opt.persistent.desc" ) ); - - options[ 8 ] = - new CLOptionDescriptor( "configfile", - CLOptionDescriptor.ARGUMENT_REQUIRED, - CONFIGFILE_OPT, - REZ.getString( "cli.opt.configfile.desc" ) ); - - return options; + final HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp( m_command, REZ.getString( "cli.desc.available.header" ), options, "" ); } - - public Parameters getParameters() - { - return m_parameters; - } - + public boolean parseCommandLineOptions( final String[] args ) { - final CLOptionDescriptor[] options = createCLOptions(); - final CLArgsParser parser = new CLArgsParser( args, options ); - - if( null != parser.getErrorString() ) - { - final String message = REZ.getString( "cli.error.parser", parser.getErrorString() ); - System.err.println( message ); - return false; - } - - final List clOptions = parser.getArguments(); - final int size = clOptions.size(); - - for( int i = 0; i < size; i++ ) + final Options options = createOptions(); + final CommandLineParser parser = new PosixParser(); + try { - final CLOption option = (CLOption)clOptions.get( i ); + final CommandLine line = parser.parse( options, args ); - switch( option.getDescriptor().getId() ) + if ( line.hasOption( HELP_OPT ) ) + { + usage( options ); + return false; + } + if ( line.hasOption( DEBUG_LOG_OPT ) ) + { + m_parameters.setParameter( "log-priority", "DEBUG" ); + } + if ( line.hasOption( LOG_FILE_OPT ) ) { - case 0: - { - final String message = - REZ.getString( "cli.error.unknown.arg", option.getArgument() ); - System.err.println( message ); - } - return false; - - case HELP_OPT: - usage( options ); - return false; - - case DEBUG_LOG_OPT: - m_parameters.setParameter( "log-priority", "DEBUG" ); - break; - - case LOG_FILE_OPT: - m_parameters.setParameter( "log-destination", option.getArgument() ); - break; - - case APPS_PATH_OPT: - m_parameters.setParameter( "phoenix.apps.dir", option.getArgument() ); - break; - - case REMOTE_MANAGER_OPT: - m_parameters.setParameter( SystemManager.ROLE, MANAGER_IMPL ); - break; - - case APPLICATION_OPT: - m_parameters.setParameter( "application-location", option.getArgument() ); - break; - - case PERSISTENT_OPT: - m_parameters.setParameter( "persistent", "true" ); - break; - - case DISABLE_HOOK_OPT: - m_parameters.setParameter( "disable-hook", "true" ); - break; - - case CONFIGFILE_OPT: - m_parameters.setParameter( "phoenix.configfile", option.getArgument() ); - break; + m_parameters.setParameter( "log-destination", line.getOptionValue( LOG_FILE_OPT ) ); + } + if ( line.hasOption( APPS_PATH_OPT ) ) + { + m_parameters.setParameter( "phoenix.apps.dir", line.getOptionValue( APPS_PATH_OPT ) ); + } + if ( line.hasOption( REMOTE_MANAGER_OPT ) ) + { + m_parameters.setParameter( SystemManager.ROLE, MANAGER_IMPL ); + } + if ( line.hasOption( LOG_FILE_OPT ) ) + { + m_parameters.setParameter( "log-destination", line.getOptionValue( LOG_FILE_OPT ) ); + } + if ( line.hasOption( APPLICATION_OPT ) ) + { + m_parameters.setParameter( "application-location", line.getOptionValue( APPLICATION_OPT ) ); + } + if ( line.hasOption( PERSISTENT_OPT ) ) + { + m_parameters.setParameter( "persistent", "true" ); + } + if ( line.hasOption( DISABLE_HOOK_OPT ) ) + { + m_parameters.setParameter( "disable-hook", "true" ); + } + if ( line.hasOption( CONFIGFILE_OPT ) ) + { + m_parameters.setParameter( "phoenix.configfile", line.getOptionValue( CONFIGFILE_OPT ) ); } } - + catch ( final ParseException pe ) + { + return false; + } return true; + } + + /** + * Initialise the options for command line parser. + */ + private Options createOptions() + { + final Options options = new Options(); + options.addOption( HELP_OPT, "help", false, REZ.getString( "cli.opt.help.desc" ) ); + options.addOption( OptionBuilder.withLongOpt( "log-file" ) + .withDescription( REZ.getString( "cli.opt.log-file.desc" ) ) + .hasArg() + .withArgName( "argument" ) + .create( LOG_FILE_OPT ) ); + options.addOption( OptionBuilder.withLongOpt( "apps-path" ) + .withDescription( REZ.getString( "cli.opt.apps-path.desc" ) ) + .hasArg() + .withArgName( "argument" ) + .create( APPS_PATH_OPT ) ); + options.addOption( OptionBuilder.withLongOpt( "debug-init" ) + .withDescription( REZ.getString( "cli.opt.debug-init.desc" ) ) + .create( DEBUG_LOG_OPT ) ); + options.addOption( OptionBuilder.withLongOpt( REMOTE_MANAGER_OPT ) + .withDescription( REZ.getString( "cli.opt.remote-manager.desc" ) ) + .create() ); + options.addOption( OptionBuilder.withLongOpt( DISABLE_HOOK_OPT ) + .withDescription( REZ.getString( "cli.opt.disable-hook.desc" ) ) + .create() ); + options.addOption( OptionBuilder.withLongOpt( APPLICATION_OPT ) + .withDescription( REZ.getString( "cli.opt.application.desc" ) ) + .hasArg() + .withArgName( "argument" ) + .create() ); + options.addOption( OptionBuilder.withLongOpt("persistent" ) + .withDescription( REZ.getString( "cli.opt.persistent.desc" ) ) + .create( PERSISTENT_OPT ) ); + options.addOption( OptionBuilder.withLongOpt( "configfile" ) + .withDescription( REZ.getString( "cli.opt.configfile.desc" ) ) + .hasArg() + .withArgName( "argument" ) + .create( CONFIGFILE_OPT ) ); + return options; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
