: Class CommandLine

Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## roast
Class CommandLine

    java.lang.Object
      |
      +--roast.CommandLine

public class CommandLine
extends java.lang.Object

A `CommandLine` object parses an array of Unix-style command-line arguments according to a user-supplied specification.

define terms: flag, flag argument, suffix argument

State variables
errorMessage: String
flagArgs: set of (flag: String, arg: String)
suffixArgs: array of String

Field Summary
`static java.lang.String` | `DUPLICATEFLAG`
`static java.lang.String` | `INVALIDFLAG`
`static java.lang.String` | `INVALIDFLAGARG`
`static java.lang.String` | `MISSINGFLAGARG`
`static java.lang.String` | `REQUIREDFLAGMISSING`

Constructor Summary
`CommandLine(FlagSpec[] flagSpec, java.lang.String[] args)` Parses an array of command line flags and arguments.

Method Summary
`java.lang.String` | `getErrorMessage()` Gets the error message if the command line was not successfully parsed.
`java.lang.String` | `getFlagArg(java.lang.String flagName)` Gets value of named flag.
`java.lang.String[]` | `getSuffixArgs()` Gets suffix arguments arguments present in args.
`boolean` | `isArgPresent(java.lang.String flagName)` Determines whether the named flag is present in args.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DUPLICATEFLAG

    public static final java.lang.String DUPLICATEFLAG

### MISSINGFLAGARG

    public static final java.lang.String MISSINGFLAGARG

### INVALIDFLAGARG

    public static final java.lang.String INVALIDFLAGARG

### INVALIDFLAG

    public static final java.lang.String INVALIDFLAG

### REQUIREDFLAGMISSING

    public static final java.lang.String REQUIREDFLAGMISSING

Constructor Detail

### CommandLine

    public CommandLine(FlagSpec[] flagSpec,
                       java.lang.String[] args)
                throws ParameterException

  Parses an array of command line flags and arguments.
  Precondition
    ArgType does not throw an exception
  Exceptions
    if flagSpec or args contains a null entry
    or args has an entry that is ""
    or flagSpec has two entries with the same flag name then
    throw ParameterException
  Transitions

         i = 0
         errorMessage = ""
         while i < 0..args.length && errorMessage == ""
         	if args[i] has a leading "-" // flags
         		if flagSpec has an entry F such that F.name == args[i]
         			if flagArgs has an entry with name args[i]
         				errorMessage = DUPLICATEFLAG+args[i]
         			else if F.argRequired
         				if i == args.length-1
         					errorMessage = MISSINGFLAGARG+args[i]
         				else if !F.argType.isValid(args[i+1])
         					errorMessage = INVALIDFLAGARG+args[i+1]
         				else
         					add (args[i],args[i+1]) to flagArgs
         					i = i+2
         			else
         				add (args[i],null) to flagArgs
         				i = i+1
         		else
         			errorMessage = INVALIDFLAG+args[i]
         	else // begin suffix arguments
         		if there is a required flag F in flagSpec not in flagArgs
         			errorMessage = REQUIREDFLAGMISSING+F.name
         		else
         			copy args[i..args.length-1] to suffixArgs

Method Detail

### getErrorMessage

    public java.lang.String getErrorMessage()

  Gets the error message if the command line was not successfully parsed.
  Output
    errorMessage or null if no error occurred

### isArgPresent

    public boolean isArgPresent(java.lang.String flagName)

  Determines whether the named flag is present in args.
  Output
    exists (flagName,x) in flagArgs, where x is any value (may be null)

### getFlagArg

    public java.lang.String getFlagArg(java.lang.String flagName)

  Gets value of named flag.
  Output
    arg such that (flagName, arg) is in flagArgs
    null if an error occurred during parsing

### getSuffixArgs

    public java.lang.String[] getSuffixArgs()

  Gets suffix arguments arguments present in args.
  Output
    suffixArgs, may contain zero elements
    null if an error occurred during parsing

Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD