ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter (link em inglês) | |
↳ | com.android.tradefed.config.ArgsOptionParser |
Preenche os campos Option
com base nos argumentos de linha de comando analisados.
As strings na String transmitida[] são analisadas da esquerda para a direita. Cada string é classificada como um opção (como "-v"), uma opção longa (como "--detalhado"), um argumento para uma opção (como “out.txt” em "-f out.txt") ou um argumento posicional sem opção.
Cada argumento de opção precisa ser mapeado para um ou mais campos Option
. Uma opção longa mapeia para o
Option
, e uma opção curta é mapeada para o nome curto Option
. Cada nome de opção e
o nome curto da opção deve ser único em relação a todas as outras
Campos Option
no mesmo objeto.
Um único argumento de opção pode ser mapeado para vários campos Option
com o mesmo nome.
em vários objetos. Os argumentos Option
podem receber namespaces para se referirem exclusivamente a um
campo Option
em um único objeto, usando o nome completo da classe desse objeto ou
Valor de alias OptionClass
separado por ':'. isto é,
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Uma opção curta simples é um "-" seguido por um curto caractere de opção. Se a opção exigir uma (o que é verdadeiro para qualquer opção não booleana), ele pode ser escrito como um parâmetro separado, mas não precisam ser. Ou seja, "-f out.txt" e "-fout.txt" são aceitáveis.
É possível especificar várias opções curtas após um único "-" contanto que todos (exceto possivelmente a última) não exigem argumentos.
Uma opção longa começa com "--" seguido por vários caracteres. Se a opção exigir uma , ele pode ser escrito logo após o nome da opção, separado por "=" ou como o próximo . Ou seja, "--file=out.txt" ou "--file out.txt".
Uma opção booleana longa "--name" recebe automaticamente "--no-name" companheiro Se tiver uma opção, "--flag", depois "--flag", "--no-flag", "--flag=true" e "--flag=false" são todos válidos, "--flag true" nem "--flag false" são permitidas (já que "--flag" por si só é suficiente, a após "true" ou "falso" são interpretados separadamente). Use "yes" e "não" como sinônimos para "verdadeiro" e "false".
Cada string que não começa com um "-" e não um argumento obrigatório de uma opção anterior é uma argumento posicional non-option, assim como todas as strings sucessivas. Cada string após um "--" é um argumento posicional sem opção.
Os campos correspondentes às opções são atualizados à medida que as opções são processadas. Qualquer valor restante argumentos posicionais são retornados como List<String>.
Veja um exemplo simples:
// 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) { ... } ... }
- a página do manual do getopt(1)
- "optparse" do Python módulo (http://docs.python.org/library/optparse.html)
- as "Diretrizes de sintaxe de utilitários" no formato POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- o GNU "Padrões para interfaces de linha de comando" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
Confira também:
Resumo
Construtores públicos | |
---|---|
ArgsOptionParser(
Cria um |
|
ArgsOptionParser(Object... optionSources)
Cria um |
Métodos públicos | |
---|---|
|
getInopOptions()
Retorna o conjunto de opções que não mudaram os valores padrão. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Texto de ajuda de saída para todos os campos |
|
parse(String... args)
Analisa os argumentos de linha de comando "args", definindo os campos @Option de "optionSource" fornecida ao construtor. |
|
parse(
Método |
|
parseBestEffort(
Método |
|
parseBestEffort(
Método |
|
parseBestEffort(String... args)
Uma versão de melhor esforço de |
void
|
validateMandatoryOptions()
Valida se todos os campos marcados como obrigatórios foram definidos. |
Construtores públicos
ArgsOptionParser
public ArgsOptionParser (optionSources)
Cria um ArgsOptionParser
para uma coleção de objetos.
Parâmetros | |
---|---|
optionSources |
: os objetos de configuração. |
Gera | |
---|---|
ConfigurationException |
se os objetos de configuração estiverem configurados incorretamente. |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Cria um ArgsOptionParser
para um ou mais objetos.
Parâmetros | |
---|---|
optionSources |
Object : os objetos de configuração. |
Gera | |
---|---|
ConfigurationException |
se os objetos de configuração estiverem configurados incorretamente. |
Métodos públicos
getInopOptions
publicgetInopOptions ()
Retorna o conjunto de opções que não mudaram os valores padrão.
Retorna | |
---|---|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
Texto de ajuda de saída para todos os campos Option
em optionObject.
O texto de ajuda para cada opção estará no seguinte formato
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]
Parâmetros | |
---|---|
importantOnly |
boolean : se true exibir apenas ajuda para as opções importantes. |
optionObject |
Object : o objeto para mostrar o texto de ajuda. |
Retorna | |
---|---|
String |
uma string contendo texto de ajuda fácil de usar para todos os campos de opção |
análise
publicparse (String... args)
Analisa os argumentos de linha de comando "args", definindo os campos @Option de "optionSource" fornecida ao construtor.
Parâmetros | |
---|---|
args |
String |
Retorna | |
---|---|
|
uma ERROR(/List) dos argumentos posicionais que sobraram após o processamento de todas as opções. |
Gera | |
---|---|
ConfigurationException |
se ocorreu um erro ao analisar os argumentos. |
análise
publicparse ( args)
Método parse(String)
alternativo que usa uma ERROR(/List)
de argumentos
Parâmetros | |
---|---|
args |
|
Retorna | |
---|---|
|
uma ERROR(/List) dos argumentos posicionais que sobraram após o processamento de todas as opções. |
Gera | |
---|---|
ConfigurationException |
se ocorreu um erro ao analisar os argumentos. |
parseMelhorEffort
publicparseBestEffort ( args)
Método parseBestEffort(String)
alternativo, que usa um ERROR(/List)
de
argumentos
Parâmetros | |
---|---|
args |
|
Retorna | |
---|---|
|
um ERROR(/List) dos argumentos restantes |
parseMelhorEffort
publicparseBestEffort ( args, boolean forceContinue)
Método parseBestEffort(String)
alternativo, que usa um ERROR(/List)
de
e pode ser forçado a continuar a análise até o final, mesmo se alguns argumentos não
analisar.
Parâmetros | |
---|---|
args |
: lista que conterá os argumentos restantes. |
forceContinue |
boolean : verdadeiro se a análise continuar mesmo se alguns argumentos não forem analisados. |
Retorna | |
---|---|
|
um ERROR(/List) dos argumentos restantes |
parseMelhorEffort
publicparseBestEffort (String... args)
Uma versão de melhor esforço de parse(String)
. Se uma ConfigurationException for
gerada, essa exceção é capturada internamente, e os argumentos restantes (incluindo o
que fez com que a exceção fosse gerada) são retornados. Esse método não é gerado.
Parâmetros | |
---|---|
args |
String |
Retorna | |
---|---|
|
um ERROR(/List) dos argumentos restantes |
validateMandatoryOptions
public void validateMandatoryOptions ()
Valida se todos os campos marcados como obrigatórios foram definidos.
Gera | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |