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 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 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) {
...
}
...
}
- 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(
Cria um |
|
ArgsOptionParser(Object... optionSources)
Cria um |
|
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)
Mostra o texto de ajuda para todos os campos |
|
parse(String... args)
Analisa os argumentos de linha de comando "args", definindo os campos @Option da "optionSource" fornecidos para o 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 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 vai estar no seguinte formato:
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]
| 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
publicparse (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. |
analisar
publicparse ( 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. |
parseBestEffort
publicparseBestEffort ( args)
Método parseBestEffort(String) alternativo que recebe um ERROR(/List) de
argumentos
| Parâmetros | |
|---|---|
args |
|
| Retorna | |
|---|---|
|
uma ERROR(/List) dos argumentos restantes |
parseBestEffort
publicparseBestEffort ( 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 ele precisa continuar sendo analisado mesmo que alguns argumentos não sejam analisados. |
| Retorna | |
|---|---|
|
uma ERROR(/List) dos argumentos restantes |
parseBestEffort
publicparseBestEffort (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 |
|