ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Preenche campos Option a partir de argumentos de linha de comando analisados.

As strings na String[] passada são analisadas da esquerda para a direita. Cada String é classificada como uma opção curta (como "-v"), uma opção longa (como "--verbose"), 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 deve ser mapeado para um ou mais campos Option . Uma opção longa é mapeada para o nome Option e uma opção curta é mapeada para o nome abreviado Option . Cada nome de opção e nome abreviado de opção deve ser exclusivo em relação a todos os outros 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 ter namespace para se referir exclusivamente a um campo Option dentro de um único objeto usando o nome completo da classe desse objeto ou seu valor de alias OptionClass separado por ':'. ou seja,

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

Uma opção curta simples é um "-" seguido por um caractere de opção curto. Se a opção requer um argumento (o que vale para qualquer opção não booleana), ele pode ser escrito como um parâmetro separado, mas não precisa ser. Ou seja, "-f out.txt" e "-fout.txt" são aceitáveis.

É possível especificar múltiplas opções curtas após um único "-", desde que todas (exceto possivelmente a última) não exijam argumentos.

Uma opção longa começa com “--” seguida por vários caracteres. Se a opção exigir um argumento, ele poderá ser escrito diretamente após o nome da opção, separado por "=", ou como próximo argumento. (Ou seja, "--file=out.txt" ou "--file out.txt".)

Uma opção booleana longa '--name' obtém automaticamente um companheiro '--no-name'. Dada uma opção "--flag", então, "--flag", "--no-flag", "--flag=true" e "--flag=false" são todos válidos, embora nem "--flag true" nem "--flag false" são permitidos (já que "--flag" por si só é suficiente, o seguinte "true" ou "false" é interpretado separadamente). Você pode usar “sim” e “não” como sinônimos de “verdadeiro” e “falso”.

Cada String que não começa com um "-" e não é um argumento obrigatório de uma opção anterior é um argumento posicional sem opção, 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 suas opções são processadas. Quaisquer argumentos posicionais restantes são retornados como List<String>.

Aqui está 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) {
        ...
     }
     ...

 }

 
Veja também:
  • a página de manual getopt(1)
  • Módulo "optparse" do Python (http://docs.python.org/library/optparse.html)
  • as "Diretrizes de sintaxe de utilitário" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • os "Padrões para Interfaces de Linha de Comando" do GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Veja também:

Resumo

Construtores públicos

ArgsOptionParser ( optionSources) ArgsOptionParser ( optionSources)

Cria um ArgsOptionParser para uma coleção de objetos.

ArgsOptionParser (Object... optionSources)

Cria um ArgsOptionParser para um ou mais objetos.

Métodos públicos

getInopOptions ()

Retorna o conjunto de opções que não alteraram nenhum valor padrão.

static String getOptionHelp (boolean importantOnly, Object optionObject)

Produza texto de ajuda para todos os campos Option em opçãoObject .

parse (String... args)

Analisa os argumentos da linha de comando 'args', definindo os campos @Option de 'optionSource' fornecidos ao construtor.

parse ( args) parse ( args)

Método parse(String) alternativo que recebe um ERROR(/List) de argumentos

parseBestEffort ( args) parseBestEffort ( args)

Método alternativo parseBestEffort(String) que recebe um ERROR(/List) de argumentos

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

Método alternativo parseBestEffort(String) que recebe um ERROR(/List) de argumentos e pode ser forçado a continuar a análise até o final, mesmo que alguns argumentos não sejam analisados.

parseBestEffort (String... args)

Uma versão de melhor esforço de parse(String) .

void validateMandatoryOptions ()

Valida que 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.

Lança
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.

Lança
ConfigurationException se os objetos de configuração estiverem configurados incorretamente.

Métodos públicos

getInopOptions

public  getInopOptions ()

Retorna o conjunto de opções que não alteraram nenhum valor padrão.

Devoluções

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Produza texto de ajuda para todos os campos Option em opçãoObject .

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]
 
O texto 'Padrão..." será omitido se o campo de opção for nulo ou vazio.

Parâmetros
importantOnly boolean : se true , imprime apenas ajuda para as opções importantes

optionObject Object : o objeto para imprimir o texto de ajuda

Devoluções
String uma String contendo texto de ajuda amigável para todos os campos de Opção

analisar

public  parse (String... args)

Analisa os argumentos da linha de comando 'args', definindo os campos @Option de 'optionSource' fornecidos ao construtor.

Parâmetros
args String

Devoluções
um ERROR(/List) dos argumentos posicionais restantes após o processamento de todas as opções.

Lança
ConfigurationException se ocorreu um erro ao analisar os argumentos.

analisar

public  parse ( args)

Método parse(String) alternativo que recebe um ERROR(/List) de argumentos

Parâmetros
args

Devoluções
um ERROR(/List) dos argumentos posicionais restantes após o processamento de todas as opções.

Lança
ConfigurationException se ocorreu um erro ao analisar os argumentos.

analisarBestEffort

public  parseBestEffort ( args)

Método alternativo parseBestEffort(String) que recebe um ERROR(/List) de argumentos

Parâmetros
args

Devoluções
um ERROR(/List) dos argumentos restantes

analisarBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Método alternativo parseBestEffort(String) que recebe um ERROR(/List) de argumentos e pode ser forçado a continuar a análise até o final, mesmo que alguns argumentos não sejam analisados.

Parâmetros
args : lista que conterá os argumentos restantes.

forceContinue boolean : Verdadeiro se continuar a análise, mesmo que alguns argumentos não sejam analisados.

Devoluções
um ERROR(/List) dos argumentos restantes

analisarBestEffort

public  parseBestEffort (String... args)

Uma versão de melhor esforço de parse(String) . Se uma ConfigurationException for lançada, essa exceção será capturada internamente e os argumentos restantes (incluindo o argumento que causou o lançamento da exceção) serão retornados. Este método não lança.

Parâmetros
args String

Devoluções
um ERROR(/List) dos argumentos restantes

validarMandatoryOptions

public void validateMandatoryOptions ()

Valida que todos os campos marcados como obrigatórios foram definidos.

Lança
com.android.tradefed.config.ConfigurationException
ConfigurationException