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'는 별도로 해석됩니다. 'true' 및 'false'의 동의어로 'yes' 및 'no'를 사용할 수 있습니다.

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

옵션이 처리되면 옵션에 해당하는 필드가 업데이트됩니다. 나머지 위치 인수는 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(Object... optionSources)

하나 이상의 객체의 ArgsOptionParser를 만듭니다.

ArgsOptionParser(Collection<Object> optionSources)

객체 컬렉션의 ArgsOptionParser를 만듭니다.

공개 메서드

Set<String> getInopOptions()

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

optionObject의 모든 Option 필드에 대한 도움말 텍스트를 출력합니다.

List<String> parse(List<String> args)

인수의 List를 사용하는 대체 ERROR(/#parse(String. args)) 메서드

List<String> parse(String... args)

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

List<String> parseBestEffort(List<String> args)

인수의 List를 사용하는 대체 ERROR(/#parseBestEffort(String. args)) 메서드

List<String> parseBestEffort(List<String> args, boolean forceContinue)

인수의 List을 사용하고 일부 인수가 파싱되지 않더라도 끝까지 파싱을 강제할 수 있는 대체 ERROR(/#parseBestEffort(String. args)) 메서드

List<String> parseBestEffort(String... args)

ERROR(/#parse(String. args))의 최선의 버전입니다.

void validateMandatoryOptions()

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

공개 생성자

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

하나 이상의 객체의 ArgsOptionParser를 만듭니다.

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

생성 값
ConfigurationException 구성 객체가 잘못 구성된 경우

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

객체 컬렉션의 ArgsOptionParser를 만듭니다.

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

생성 값
ConfigurationException 구성 객체가 잘못 구성된 경우

공개 메서드

getInopOptions

public Set<String> getInopOptions ()

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

반환
Set<String>

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 모든 옵션 필드에 대한 사용자 친화적인 도움말 텍스트가 포함된 문자열

파싱

public List<String> parse (List<String> args)

인수의 List를 사용하는 대체 ERROR(/#parse(String. args)) 메서드

매개변수
args List

반환
List<String> 모든 옵션을 처리한 후 남은 위치 인수의 List입니다.

생성 값
ConfigurationException 인수를 파싱하는 중에 오류가 발생한 경우

파싱

public List<String> parse (String... args)

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

매개변수
args String

반환
List<String> 모든 옵션을 처리한 후 남은 위치 인수의 List입니다.

생성 값
ConfigurationException 인수를 파싱하는 중에 오류가 발생한 경우

parseBestEffort

public List<String> parseBestEffort (List<String> args)

인수의 List를 사용하는 대체 ERROR(/#parseBestEffort(String. args)) 메서드

매개변수
args List

반환
List<String> 남은 인수의 List

parseBestEffort

public List<String> parseBestEffort (List<String> args, 
                boolean forceContinue)

인수의 List을 사용하고 일부 인수가 파싱되지 않더라도 끝까지 파싱을 강제할 수 있는 대체 ERROR(/#parseBestEffort(String. args)) 메서드

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

forceContinue boolean: 일부 인수가 파싱되지 않더라도 계속 파싱해야 하는 경우 true입니다.

반환
List<String> 남은 인수의 List

parseBestEffort

public List<String> parseBestEffort (String... args)

ERROR(/#parse(String. args))의 최선의 버전입니다. ConfigurationException이 발생하면 예외가 내부적으로 포착되고 예외가 발생한 인수를 포함한 나머지 인수가 반환됩니다. 이 메서드는 예외를 발생시키지 않습니다.

매개변수
args String

반환
List<String> 남은 인수의 List

validateMandatoryOptions

public void validateMandatoryOptions ()

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

생성 값
com.android.tradefed.config.ConfigurationException
ConfigurationException