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
인수에 네임스페이스를 지정하여 단일 객체 내의 Option
필드를 고유하게 참조할 수 있습니다. 이때 객체의 전체 클래스 이름 또는 ':'로 구분된 OptionClass
별칭 값을 사용합니다. 예를 들면 다음과 같습니다.
--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'는 별도로 해석됨). 'yes'와 'no'를 '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) man 페이지
- 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(
객체 컬렉션의 |
|
ArgsOptionParser(Object... optionSources)
하나 이상의 객체의 |
공개 메서드 | |
---|---|
|
getInopOptions()
기본값을 변경하지 않은 옵션 집합을 반환합니다. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
optionObject의 모든 |
|
parse(String... args)
명령줄 인수 'args'를 파싱하여 생성자에 제공된 'optionSource'의 @Option 필드를 설정합니다. |
|
parse(
인수 |
|
parseBestEffort(
인수 |
|
parseBestEffort(
인수의 |
|
parseBestEffort(String... args)
|
void
|
validateMandatoryOptions()
필수로 표시된 모든 필드가 설정되었는지 확인합니다. |
공개 생성자
ArgsOptionParser
public ArgsOptionParser (optionSources)
객체 컬렉션의 ArgsOptionParser
를 만듭니다.
매개변수 | |
---|---|
optionSources |
: 구성 객체입니다. |
생성 값 | |
---|---|
ConfigurationException |
구성 객체가 잘못 구성된 경우 |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
하나 이상의 객체의 ArgsOptionParser
를 만듭니다.
매개변수 | |
---|---|
optionSources |
Object : 구성 객체입니다. |
생성 값 | |
---|---|
ConfigurationException |
구성 객체가 잘못 구성된 경우 |
공개 메서드
getInopOptions
publicgetInopOptions ()
기본값을 변경하지 않은 옵션 집합을 반환합니다.
반환 값 | |
---|---|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
optionObject의 모든 Option
필드에 관한 도움말 텍스트를 출력합니다.
각 옵션의 도움말 텍스트는 다음 형식입니다.
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]옵션 필드가 null이거나 비어 있으면 '기본값...' 텍스트가 생략됩니다.
매개변수 | |
---|---|
importantOnly |
boolean : true 인 경우 중요한 옵션의 도움말만 출력합니다. |
optionObject |
Object : 도움말 텍스트를 출력할 객체 |
반환 값 | |
---|---|
String |
모든 옵션 필드에 대한 사용자 친화적인 도움말 텍스트가 포함된 문자열 |
parse
publicparse (String... args)
명령줄 인수 'args'를 파싱하여 생성자에 제공된 'optionSource'의 @Option 필드를 설정합니다.
매개변수 | |
---|---|
args |
String |
반환 값 | |
---|---|
|
모든 옵션을 처리한 후 남은 위치 인수의 ERROR(/List) 입니다. |
생성 값 | |
---|---|
ConfigurationException |
인수 파싱에 오류가 발생한 경우 |
파싱
publicparse ( args)
인수 ERROR(/List)
를 사용하는 대체 parse(String)
메서드
매개변수 | |
---|---|
args |
|
반환 값 | |
---|---|
|
모든 옵션을 처리한 후 남은 위치 인수의 ERROR(/List) |
생성 값 | |
---|---|
ConfigurationException |
인수 파싱에 오류가 발생한 경우 |
parseBestEffort
publicparseBestEffort ( args)
인수의 ERROR(/List)
를 사용하는 대체 parseBestEffort(String)
메서드
매개변수 | |
---|---|
args |
|
반환 값 | |
---|---|
|
남은 인수의 ERROR(/List) |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
인수의 ERROR(/List)
를 취하고 일부 인수가 파싱되지 않더라도 끝까지 파싱을 계속하도록 강제할 수 있는 대체 parseBestEffort(String)
메서드입니다.
매개변수 | |
---|---|
args |
: 남은 인수가 포함된 목록입니다. |
forceContinue |
boolean : 일부 인수가 파싱되지 않더라도 계속 파싱해야 하는 경우 True입니다. |
반환 값 | |
---|---|
|
왼쪽 인수의 ERROR(/List) |
parseBestEffort
publicparseBestEffort (String... args)
parse(String)
의 최선의 버전입니다. ConfigurationException이 발생하면 예외가 내부적으로 캡처되고 나머지 인수 (예외 발생을 일으킨 인수 포함)가 반환됩니다. 이 메서드는 발생되지 않습니다.
매개변수 | |
---|---|
args |
String |
반환 값 | |
---|---|
|
남은 인수의 ERROR(/List) |
validateMandatoryOptions
public void validateMandatoryOptions ()
필수로 표시된 모든 필드가 설정되었는지 확인합니다.
생성 값 | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |