ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Preenche os campos Option com argumentos analisados da linha de comando.

As strings no String[] transmitido 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 que não é uma opção.

Cada argumento de opção precisa 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 e nome abreviado de opção precisa 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 ser namespaceados para se referir exclusivamente a um campo Option em um único objeto usando o nome completo da classe desse objeto ou o valor do alias OptionClass separado por ":". Por exemplo,

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

Uma opção curta simples é um "-" seguido por um caractere de opção curta. Se a opção exigir um argumento (o que é verdade para qualquer opção não booleana), ela poderá ser escrita 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 abreviadas depois de um único "-", desde que todas (exceto talvez 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 poderá ser escrito diretamente após o nome da opção, separado por "=", ou como o próximo argumento. Ou seja, "--file=out.txt" ou "--file out.txt".

Uma opção booleana longa "--name" recebe automaticamente uma opção complementar "--no-name". Considerando uma opção "--flag", "--flag", "--no-flag", "--flag=true" e "--flag=false" são válidas, mas "--flag true" e "--flag false" não são permitidas. Como "--flag" por si só é suficiente, o "true" ou "false" a seguir é interpretado separadamente. Você pode usar "sim" e "não" como sinônimos de "verdadeiro" e "falso".

Cada string que não começa com "-" e não é um argumento obrigatório de uma opção anterior é um argumento posicional não opcional, assim como todas as strings sucessivas. Cada string depois de "--" é um argumento posicional não opcional.

Os campos correspondentes às opções são atualizados conforme elas são processadas. Todos os argumentos posicionais restantes são retornados como uma List<String>.

Segue 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) {
        ...
     }
     ...

 }

 
Consulte 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 utilidade" do 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)

Confira também:

Resumo

Construtores públicos

ArgsOptionParser(Object... optionSources)

Cria um ArgsOptionParser para um ou mais objetos.

ArgsOptionParser(Collection<Object> optionSources)

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

Métodos públicos

Set<String> getInopOptions()

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

Mostra o texto de ajuda para todos os campos Option em optionObject.

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

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

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

Analisa os argumentos de linha de comando "args", definindo os campos @Option do "optionSource" fornecido ao construtor.

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

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

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

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

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

Uma versão de melhor esforço de ERROR(/#parse(String. args)).

void validateMandatoryOptions()

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

Construtores públicos

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.

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

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

Parâmetros
optionSources Collection: os objetos de configuração.

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

Métodos públicos

getInopOptions

public Set<String> getInopOptions ()

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

Retorna
Set<String>

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Mostra o texto de ajuda para todos os campos Option em optionObject.

O texto de ajuda de 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, imprima apenas a ajuda para as opções importantes.

optionObject Object: o objeto para imprimir o texto de ajuda

Retorna
String Uma string que contém texto de ajuda fácil de usar para todos os campos de opção.

parse

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

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

Parâmetros
args List

Retorna
List<String> uma List dos argumentos posicionais restantes após o processamento de todas as opções.

Gera
ConfigurationException se ocorreu um erro ao analisar os argumentos.

parse

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

Analisa os argumentos de linha de comando "args", definindo os campos @Option do "optionSource" fornecido ao construtor.

Parâmetros
args String

Retorna
List<String> uma List dos argumentos posicionais restantes após o processamento de todas as opções.

Gera
ConfigurationException se ocorreu um erro ao analisar os argumentos.

parseBestEffort

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

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

Parâmetros
args List

Retorna
List<String> um List dos argumentos restantes

parseBestEffort

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

Método ERROR(/#parseBestEffort(String. args)) alternativo que usa um 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 List: lista que vai conter os argumentos restantes.

forceContinue boolean: verdadeiro se ele precisar continuar analisando mesmo que alguns argumentos não sejam analisados.

Retorna
List<String> um List dos argumentos restantes

parseBestEffort

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

Uma versão de melhor esforço de ERROR(/#parse(String. args)). Se uma ConfigurationException for gerada, ela será capturada internamente, e os argumentos restantes (incluindo o argumento que causou a geração da exceção) serão retornados. Esse método não gera exceções.

Parâmetros
args String

Retorna
List<String> um 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