ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Preenche campos Option de argumentos de linha de comando analisados.

Strings no String[] passado 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 curto Option . Cada nome de opção e nome abreviado de opção deve ser exclusivo em relação a todos os outros campos Option dentro do mesmo objeto.

Um único argumento de opção pode ser mapeado para vários campos Option com o mesmo nome em vários objetos. Argumentos Option podem ter namespace para se referir exclusivamente a um campo Option dentro de um único objeto usando o nome de classe completo 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 exigir um argumento (o que é verdadeiro 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 várias 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 "--" seguido de vários caracteres. Se a opção exigir um argumento, ele pode ser escrito logo após o nome da opção, separado por "=", ou como o próximo argumento. (Isto é, "--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 nenhum dos dois seja "--flag true" nem "--flag false" são permitidos (uma vez 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 uma 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)
  • o GNU "Padrões para Interfaces de Linha de Comando" (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 alterou nenhum valor padrão.

static String getOptionHelp (boolean importantOnly, Object optionObject)

Texto de ajuda de saída para todos os campos Option em objeto de opção .

parse (String... args)

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

parse ( args) parse ( args)

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

parseBestEffort ( args) parseBestEffort ( args)

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

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

Método parseBestEffort(String) alternativo que usa 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 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.

lances
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.

lances
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 alterou nenhum valor padrão.

devoluções

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Texto de ajuda de saída para todos os campos Option em objeto de opção .

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 da opção for nulo ou vazio.

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

optionObject Object : o objeto para imprimir o texto de ajuda para

devoluções
String uma string contendo um texto de ajuda amigável para todos os campos de opção

analisar

public  parse (String... args)

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

Parâmetros
args String

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

lances
ConfigurationException se ocorreu um erro ao analisar os argumentos.

analisar

public  parse ( args)

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

Parâmetros
args

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

lances
ConfigurationException se ocorreu um erro ao analisar os argumentos.

parseBestEffort

public  parseBestEffort ( args)

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

Parâmetros
args

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

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Método parseBestEffort(String) alternativo que usa 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 : True se deve continuar a analisar mesmo que alguns argumentos não sejam analisados.

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

parseBestEffort

public  parseBestEffort (String... args)

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

Parâmetros
args String

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

validarObrigatórioOpções

public void validateMandatoryOptions ()

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

lances
com.android.tradefed.config.ConfigurationException
ConfigurationException