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]
| 매개변수 | |
|---|---|
importantOnly |
boolean: true인 경우 중요한 옵션의 도움말만 출력합니다. |
optionObject |
Object: 도움말 텍스트를 출력할 객체입니다. |
| 반환 값 | |
|---|---|
String |
모든 옵션 필드에 대한 사용자 친화적인 도움말 텍스트가 포함된 문자열 |
parse
publicparse (String... args)
명령줄 인수 'args'를 파싱하여 생성자에 제공된 'optionSource'의 @Option 필드를 설정합니다.
| 매개변수 | |
|---|---|
args |
String |
| 반환 값 | |
|---|---|
|
모든 옵션을 처리한 후 남은 위치 인수의 ERROR(/List)입니다. |
| 생성 값 | |
|---|---|
ConfigurationException |
인수 파싱에 오류가 발생한 경우 |
parse
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 |
|