ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Preenche campos Option com base em argumentos de linha de comando analisados.

As strings na String transmitida[] 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 de 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 é mapeada para o nome Option, e uma opção curta é mapeada para o nome curto Option. Cada nome e nome abreviado da opção precisam ser exclusivos 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 em um único objeto usando o nome de classe completo desse objeto ou o valor de 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 é verdadeiro para qualquer opção não booleana), ela poderá ser gravada 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 "--" seguida 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 longa booleana '--name' recebe automaticamente um complemento '--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" sejam permitidos (já que "--flag" por si só é suficiente, o "true" ou "false" a seguir é interpretado separadamente). Você pode usar "sim" e "não" como sinônimos para "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 conforme as opções são processadas. Todos os argumentos posicionais restantes são retornados como uma List<String>.

Confira 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 utilitários" do POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • os "Standards for Command Line Interfaces" do GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces).

Confira também:

Resumo

Construtores públicos

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

Texto de ajuda de saída para todos os campos Option em optionObject.

parse(String... args)

Faz a análise dos argumentos de linha de comando "args", definindo os campos @Option da "optionSource" fornecidos ao construtor.

parse( args)

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

parseBestEffort( args)

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

parseBestEffort( args, boolean forceContinue)

Método parseBestEffort(String) alternativo que recebe um ERROR(/List) de argumentos e pode ser forçado a continuar a análise até o fim, 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.

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

public  getInopOptions ()

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

Retorna

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 terá o 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 mostrar apenas a ajuda para as opções importantes

optionObject Object: o objeto para mostrar o texto de ajuda

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

analisar

public  parse (String... args)

Faz a análise dos argumentos de linha de comando "args", definindo os campos @Option da "optionSource" fornecidos ao construtor.

Parâmetros
args String

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

Gera
ConfigurationException Se ocorreu um erro ao analisar os argumentos.

análise

public  parse ( args)

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

Parâmetros
args

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

Gera
ConfigurationException se ocorreu um erro ao analisar os argumentos.

analisarMelhorEffort

public  parseBestEffort ( args)

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

Parâmetros
args

Retorna
um ERROR(/List) dos argumentos restantes

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

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

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

forceContinue boolean: verdadeiro se a análise continuar mesmo se alguns argumentos não forem analisados.

Retorna
uma ERROR(/List) dos argumentos restantes

parseBestEffort

public  parseBestEffort (String... args)

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

Parâmetros
args String

Retorna
uma 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