ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


구문 분석된 명령줄 인수에서 Option 필드를 채웁니다.

전달된 String[]의 문자열은 왼쪽에서 오른쪽으로 구문 분석됩니다. 각 문자열은 짧은 옵션(예: "-v"), 긴 옵션(예: "--verbose"), 옵션에 대한 인수(예: "-f out.txt의 "out.txt")로 분류됩니다. ") 또는 옵션이 아닌 위치 인수입니다.

각 옵션 인수는 하나 이상의 Option 필드에 매핑되어야 합니다. 긴 옵션은 Option 이름에 매핑되고 짧은 옵션은 Option 짧은 이름에 매핑됩니다. 각 옵션 이름과 옵션 짧은 이름은 동일한 개체 내의 다른 모든 Option 필드와 관련하여 고유해야 합니다.

단일 옵션 인수는 여러 개체에서 동일한 이름을 가진 여러 Option 필드에 매핑될 수 있습니다. Option 인수는 개체의 전체 클래스 이름이나 ':'으로 구분된 해당 OptionClass 별칭 값을 사용하여 단일 개체 내의 Option 필드를 고유하게 참조하도록 네임스페이스를 지정할 수 있습니다. 즉,

 --classname:optionname optionvalue or
 --optionclassalias:optionname optionvalue.
 

간단한 짧은 옵션은 "-" 뒤에 짧은 옵션 문자가 오는 것입니다. 옵션에 인수가 필요한 경우(부울이 아닌 모든 옵션에 해당) 별도의 매개변수로 작성할 수 있지만 반드시 그럴 필요는 없습니다. 즉, "-f out.txt"와 "-fout.txt"가 모두 허용됩니다.

모든 옵션(마지막 옵션 제외)에 인수가 필요하지 않은 한 단일 "-" 뒤에 여러 개의 짧은 옵션을 지정할 수 있습니다.

긴 옵션은 "--"로 시작하고 그 뒤에 여러 문자가 옵니다. 옵션에 인수가 필요한 경우 옵션 이름 바로 뒤에 "="로 구분하여 작성하거나 다음 인수로 작성할 수 있습니다. (즉, "--file=out.txt" 또는 "--file out.txt"입니다.)

긴 부울 옵션 '--name'은 자동으로 '--no-name' 컴패니언을 가져옵니다. "--flag" 옵션이 주어지면 "--flag", "--no-flag", "--flag=true" 및 "--flag=false"는 모두 유효하지만 "--flag는 둘 다 유효하지 않습니다. true" 또는 "--flag false"가 허용됩니다("--flag" 자체로 충분하므로 다음 "true" 또는 "false"는 별도로 해석됩니다). "예"와 "아니요"는 "참"과 "거짓"의 동의어로 사용할 수 있습니다.

"-"로 시작하지 않고 이전 옵션의 필수 인수가 아닌 각 문자열은 모든 연속 문자열과 마찬가지로 옵션이 아닌 위치 인수입니다. "--" 뒤의 각 문자열은 옵션이 아닌 위치 인수입니다.

옵션이 처리될 때 옵션에 해당하는 필드가 업데이트됩니다. 나머지 위치 인수는 List<String>으로 반환됩니다.

간단한 예는 다음과 같습니다.

 // Non-@Option fields will be ignored.
 class Options {
     @Option(name = "quiet", shortName = 'q')
     boolean quiet = false;

     // Here the user can use --no-color.
     @Option(name = "color")
     boolean color = true;

     @Option(name = "mode", shortName = 'm')
     String mode = "standard; // Supply a default just by setting the field.

     @Option(name = "port", shortName = 'p')
     int portNumber = 8888;

     // There's no need to offer a short name for rarely-used options.
     @Option(name = "timeout" )
     double timeout = 1.0;

     @Option(name = "output-file", shortName = 'o' })
     File output;

     // Multiple options are added to the collection.
     // The collection field itself must be non-null.
     @Option(name = "input-file", shortName = 'i')
     List<File> inputs = new ArrayList<File>();

 }

 Options options = new Options();
 List<String> posArgs = new OptionParser(options).parse("--input-file", "/tmp/file1.txt");
 for (File inputFile : options.inputs) {
     if (!options.quiet) {
        ...
     }
     ...

 }

 
참조:
  • getopt(1) 매뉴얼 페이지
  • Python의 "optparse" 모듈(http://docs.python.org/library/optparse.html)
  • POSIX "유틸리티 구문 지침"(http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • GNU "명령줄 인터페이스 표준"(http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

또한보십시오:

요약

공개 생성자

ArgsOptionParser ( optionSources) ArgsOptionParser ( optionSources)

개체 컬렉션에 대한 ArgsOptionParser 만듭니다.

ArgsOptionParser (Object... optionSources)

하나 이상의 개체에 대한 ArgsOptionParser 만듭니다.

공개 메소드

getInopOptions ()

기본값을 변경하지 않은 옵션 세트를 반환합니다.

static String getOptionHelp (boolean importantOnly, Object optionObject)

모든 Option 필드에 대한 도움말 텍스트를 출력합니다. 옵션객체 .

parse (String... args)

명령줄 인수 'args'를 구문 분석하여 생성자에 제공된 'optionSource'의 @Option 필드를 설정합니다.

parse ( args) parse ( args)

인수의 ERROR(/List) 취하는 대체 parse(String) 메소드

parseBestEffort ( args) parseBestEffort ( args)

인수의 ERROR(/List) 취하는 대체 parseBestEffort(String) 메소드

parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue)

인수의 ERROR(/List) 사용하고 일부 인수가 구문 분석되지 않는 경우에도 끝까지 구문 분석을 계속하도록 강제할 수 있는 대체 parseBestEffort(String) 메서드입니다.

parseBestEffort (String... args)

최고의 노력을 기울인 버전의 parse(String) 입니다.

void validateMandatoryOptions ()

필수로 표시된 모든 필드가 설정되었는지 확인합니다.

공개 생성자

ArgsOptionParser

public ArgsOptionParser ( optionSources)

개체 컬렉션에 대한 ArgsOptionParser 만듭니다.

매개변수
optionSources : 구성 개체.

던지기
ConfigurationException 구성 개체가 부적절하게 구성된 경우.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

하나 이상의 개체에 대한 ArgsOptionParser 만듭니다.

매개변수
optionSources Object : 구성 개체입니다.

던지기
ConfigurationException 구성 개체가 부적절하게 구성된 경우.

공개 메소드

getIopOptions

public  getInopOptions ()

기본값을 변경하지 않은 옵션 세트를 반환합니다.

보고

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

모든 Option 필드에 대한 도움말 텍스트를 출력합니다. 옵션객체 .

각 옵션에 대한 도움말 텍스트는 다음 형식입니다

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
옵션 필드가 null이거나 비어 있으면 '기본값...' 텍스트가 생략됩니다.

매개변수
importantOnly boolean : true 인 경우 중요한 옵션에 대한 도움말만 인쇄합니다.

optionObject Object : 도움말 텍스트를 인쇄할 객체

보고
String 모든 옵션 필드에 대한 사용자 친화적인 도움말 텍스트가 포함된 문자열

분석하다

public  parse (String... args)

명령줄 인수 'args'를 구문 분석하여 생성자에 제공된 'optionSource'의 @Option 필드를 설정합니다.

매개변수
args String

보고
모든 옵션을 처리한 후 남은 위치 인수의 ERROR(/List) .

던지기
ConfigurationException 인수를 구문 분석하는 중에 오류가 발생한 경우.

분석하다

public  parse ( args)

인수의 ERROR(/List) 취하는 대체 parse(String) 메소드

매개변수
args

보고
모든 옵션을 처리한 후 남은 위치 인수의 ERROR(/List) .

던지기
ConfigurationException 인수를 구문 분석하는 중에 오류가 발생한 경우.

최선의 노력을 분석하다

public  parseBestEffort ( args)

인수의 ERROR(/List) 취하는 대체 parseBestEffort(String) 메소드

매개변수
args

보고
남은 인수의 ERROR(/List)

최선의 노력을 분석하다

public  parseBestEffort ( args, 
                boolean forceContinue)

인수의 ERROR(/List) 사용하고 일부 인수가 구문 분석되지 않는 경우에도 끝까지 구문 분석을 계속하도록 강제할 수 있는 대체 parseBestEffort(String) 메서드입니다.

매개변수
args : 남은 인수를 포함할 목록입니다.

forceContinue boolean : 일부 인수가 구문 분석되지 않더라도 계속 구문 분석해야 하는 경우 True입니다.

보고
남은 인수의 ERROR(/List)

최선의 노력을 분석하다

public  parseBestEffort (String... args)

최고의 노력을 기울인 버전의 parse(String) 입니다. ConfigurationException이 발생하면 해당 예외가 내부적으로 캡처되고 나머지 인수(예외 발생을 발생시킨 인수 포함)가 반환됩니다. 이 방법은 던지지 않습니다.

매개변수
args String

보고
남은 인수의 ERROR(/List)

검증필수옵션

public void validateMandatoryOptions ()

필수로 표시된 모든 필드가 설정되었는지 확인합니다.

던지기
com.android.tradefed.config.ConfigurationException
ConfigurationException