ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Заполняет поля Option на основе проанализированных аргументов командной строки.

Строки в переданном массиве String[] анализируются слева направо. Каждая строка классифицируется как короткий параметр (например, "-v"), длинный параметр (например, "--verbose"), аргумент параметра (например, "out.txt" в "-f out.txt") или позиционный аргумент, не являющийся параметром.

Каждый аргумент параметра должен соответствовать одному или нескольким полям Option . Длинный параметр соответствует имени Option , а короткий параметр — короткому имени Option . Каждое имя параметра и короткое имя параметра должны быть уникальными по отношению ко всем остальным полям Option в рамках одного объекта.

Один аргумент параметра может быть сопоставлен с несколькими полями Option с одинаковым именем в нескольких объектах. Аргументы Option могут быть объединены в пространство имен для уникальной ссылки на поле Option в рамках одного объекта с использованием полного имени класса этого объекта или значения его псевдонима OptionClass , разделенных двоеточием (':').

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

Простая короткая опция — это символ «-», за которым следует короткий символ опции. Если опция требует аргумента (что верно для любой нелогической опции), его можно указать как отдельный параметр, но это необязательно. То есть, допустимы как «-f out.txt», так и «-fout.txt».

После символа "-" можно указать несколько коротких параметров, при условии, что все они (кроме, возможно, последнего) не требуют аргументов.

Длинная опция начинается с "--", за которым следует несколько символов. Если опция требует аргумента, он может быть указан непосредственно после имени опции, отделенный символом "=", или в качестве следующего аргумента. (Например, "--file=out.txt" или "--file out.txt".)

Логический параметр типа long '--name' автоматически получает дополнение '--no-name'. Если задан параметр "--flag", то "--flag", "--no-flag", "--flag=true" и "--flag=false" являются допустимыми, хотя ни "--flag true", ни "--flag false" не допускаются (поскольку "--flag" сам по себе достаточен, последующие "true" или "false" интерпретируются отдельно). Вы можете использовать "yes" и "no" как синонимы для "true" и "false".

Каждая строка, не начинающаяся с символа "-" и не являющаяся обязательным аргументом предыдущего параметра, является позиционным аргументом, не являющимся параметром, как и все последующие строки. Каждая строка после символа "--" является позиционным аргументом, не являющимся параметром.

Поля, соответствующие параметрам, обновляются по мере обработки этих параметров. Все оставшиеся позиционные аргументы возвращаются в виде List<String>.

Вот простой пример:

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

 }

 
См. также:
  • страница руководства getopt(1)
  • Модуль Python "optparse" (http://docs.python.org/library/optparse.html)
  • Руководство по синтаксису служебных функций POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • Стандарты GNU для интерфейсов командной строки (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

См. также:

Краткое содержание

Государственные строители

ArgsOptionParser (Object... optionSources)

Создает объект ArgsOptionParser для одного или нескольких объектов.

ArgsOptionParser (Collection<Object> optionSources)

Создает объект ArgsOptionParser для коллекции объектов.

Общедоступные методы

Set<String> getInopOptions ()

Возвращает набор параметров, которые не изменили ни одного значения по умолчанию.

static String getOptionHelp (boolean importantOnly, Object optionObject)

Вывести справочный текст для всех полей Option в optionObject .

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

Альтернативный метод ERROR(/#parse(String. args)) , принимающий List аргументов.

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

Анализирует аргументы командной строки 'args', устанавливая поля @Option объекта 'optionSource', переданного конструктору.

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

Альтернативный метод ERROR(/#parseBestEffort(String. args)) , принимающий List аргументов.

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

Альтернативный метод ERROR(/#parseBestEffort(String. args)) , который принимает List аргументов и может принудительно продолжать разбор до конца, даже если некоторые аргументы не были разобраны.

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

Вариант ERROR(/#parse(String. args)) с максимально возможными усилиями.

void validateMandatoryOptions ()

Проверяет, что все поля, отмеченные как обязательные, заполнены.

Государственные строители

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Создает объект ArgsOptionParser для одного или нескольких объектов.

Параметры
optionSources Object : объекты конфигурации.

Броски
ConfigurationException если объекты конфигурации настроены неправильно.

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

Создает объект ArgsOptionParser для коллекции объектов.

Параметры
optionSources Collection : объекты конфигурации.

Броски
ConfigurationException если объекты конфигурации настроены неправильно.

Общедоступные методы

getInopOptions

public Set<String> getInopOptions ()

Возвращает набор параметров, которые не изменили ни одного значения по умолчанию.

Возвраты
Set<String>

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

Вывести справочный текст для всех полей Option в optionObject .

Текст справки для каждой опции будет представлен в следующем формате.

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Текст «По умолчанию...» будет опущен, если поле параметра имеет значение null или пустое.

Параметры
importantOnly boolean : если true , выводить только справку по важным параметрам.

optionObject Object : объект, для которого нужно вывести справочный текст.

Возвраты
String Строка, содержащая удобный для пользователя справочный текст для всех полей Option.

разбор

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

Альтернативный метод ERROR(/#parse(String. args)) , принимающий List аргументов.

Параметры
args List

Возвраты
List<String> List позиционных аргументов, оставшихся после обработки всех вариантов.

Броски
ConfigurationException если произошла ошибка при разборе аргументов.

разбор

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

Анализирует аргументы командной строки 'args', устанавливая поля @Option объекта 'optionSource', переданного конструктору.

Параметры
args String

Возвраты
List<String> List позиционных аргументов, оставшихся после обработки всех вариантов.

Броски
ConfigurationException если произошла ошибка при разборе аргументов.

parseBestEffort

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

Альтернативный метод ERROR(/#parseBestEffort(String. args)) , принимающий List аргументов.

Параметры
args List

Возвраты
List<String> List оставшихся аргументов

parseBestEffort

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

Альтернативный метод ERROR(/#parseBestEffort(String. args)) , который принимает List аргументов и может принудительно продолжать разбор до конца, даже если некоторые аргументы не были разобраны.

Параметры
args List : список, который будет содержать оставшиеся аргументы.

forceContinue boolean : True, если синтаксический анализ должен продолжаться, даже если некоторые аргументы не были обработаны.

Возвраты
List<String> List оставшихся аргументов

parseBestEffort

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

Вариант метода ERROR(/#parse(String. args)) , максимально приближенный к исходному. Если возникает исключение ConfigurationException, оно перехватывается внутри метода, и возвращаются оставшиеся аргументы (включая аргумент, вызвавший исключение). Этот метод не генерирует исключения.

Параметры
args String

Возвраты
List<String> List оставшихся аргументов

validateMandatoryOptions

public void validateMandatoryOptions ()

Проверяет, что все поля, отмеченные как обязательные, заполнены.

Броски
com.android.tradefed.config.ConfigurationException
ConfigurationException