ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.オブジェクト
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


解析されたコマンドライン引数からOptionフィールドを設定します。

渡された String[] 内の文字列は左から右に解析されます。各文字列は、短いオプション (「-v」など)、長いオプション (「--verbose」など)、オプションの引数 (「-f out.txt」の「out.txt」など) として分類されます。 ")、またはオプションではない位置引数。

各オプション引数は 1 つ以上のOptionフィールドにマップする必要があります。長いオプションはOption名にマップされ、短いオプションはOption短い名前にマップされます。各オプション名とオプションの短縮名は、同じオブジェクト内の他のすべてのOptionフィールドに対して一意である必要があります。

単一のオプション引数は、複数のオブジェクトにわたって同じ名前を持つ複数のOptionフィールドにマップできます。 Option引数には名前空間を設定し、そのオブジェクトの完全なクラス名または「:」で区切られたOptionClassエイリアス値を使用して、単一のオブジェクト内のOptionフィールドを一意に参照できます。つまり、

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

単純な短いオプションは、「-」の後に短いオプション文字が続くものです。オプションに引数が必要な場合 (ブール値以外のオプションに当てはまります)、別のパラメータとして記述することもできますが、そうする必要はありません。つまり、「-f out.txt」と「-fout.txt」の両方を使用できます。

すべて (おそらく最後のオプションを除く) が引数を必要としない限り、単一の「-」の後に複数の短いオプションを指定することができます。

長いオプションは「--」で始まり、その後にいくつかの文字が続きます。オプションに引数が必要な場合は、オプション名の直後に「=」で区切って記述するか、次の引数として記述できます。 (つまり、「--file=out.txt」または「--file out.txt」です。)

ブール型の長いオプション「--name」には、自動的に「--no-name」が付けられます。オプション「--flag」を指定すると、「--flag」、「--no-flag」、「--flag=true」、および「--flag=false」はすべて有効になりますが、「--flag」はいずれも有効ではありません。 true」または「--flag false」は許可されます(「--flag」だけで十分であるため、次の「true」または「false」は個別に解釈されます)。 「はい」と「いいえ」は「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 ( optionSources) ArgsOptionParser ( optionSources)

オブジェクトのコレクションのArgsOptionParserを作成します。

ArgsOptionParser (Object... optionSources)

1 つ以上のオブジェクトのArgsOptionParserを作成します。

パブリックメソッド

getInopOptions ()

デフォルト値を変更しなかったオプションのセットを返します。

static String getOptionHelp (boolean importantOnly, Object optionObject)

すべてのOptionフィールドのヘルプ テキストを出力します。オプションオブジェクト。

parse (String... args)

コマンドライン引数「args」を解析し、コンストラクターに提供された「optionSource」の @Option フィールドを設定します。

parse ( args) parse ( args)

引数のERROR(/List)を受け取る代替のparse(String)メソッド

parseBestEffort ( args) parseBestEffort ( args)

引数のERROR(/List)を受け取る代替のparseBestEffort(String)メソッド

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

引数のERROR(/List)を受け取り、一部の引数が解析されない場合でも、強制的に最後まで解析を続行できる代替のparseBestEffort(String)メソッド。

parseBestEffort (String... args)

parse(String)のベストエフォート版。

void validateMandatoryOptions ()

必須としてマークされたすべてのフィールドが設定されていることを検証します。

パブリックコンストラクター

ArgsOptionParser

public ArgsOptionParser ( optionSources)

オブジェクトのコレクションのArgsOptionParserを作成します。

パラメーター
optionSources : 構成オブジェクト。

投げる
ConfigurationException構成オブジェクトが不適切に構成されている場合。

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

1 つ以上のオブジェクトのArgsOptionParserを作成します。

パラメーター
optionSources Object : 構成オブジェクト。

投げる
ConfigurationException構成オブジェクトが不適切に構成されている場合。

パブリックメソッド

getIopOptions

public  getInopOptions ()

デフォルト値を変更しなかったオプションのセットを返します。

戻り値

getオプションヘルプ

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

すべてのOptionフィールドのヘルプ テキストを出力します。オプションオブジェクト。

各オプションのヘルプ テキストは

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
の形式になります。オプション フィールドが null または空の場合、「デフォルト...」テキストは省略されます。

パラメーター
importantOnly boolean : trueの場合、重要なオプションのヘルプのみを出力します

optionObject Object : ヘルプテキストを印刷するオブジェクト

戻り値
Stringすべてのオプションフィールドのユーザーフレンドリーなヘルプテキストを含む文字列

解析する

public  parse (String... args)

コマンドライン引数「args」を解析し、コンストラクターに提供された「optionSource」の @Option フィールドを設定します。

パラメーター
args String

戻り値
すべてのオプションを処理した後に残った位置引数のERROR(/List)

投げる
ConfigurationException引数の解析中にエラーが発生した場合。

解析する

public  parse ( args)

引数のERROR(/List)を受け取る代替のparse(String)メソッド

パラメーター
args

戻り値
すべてのオプションを処理した後に残った位置引数のERROR(/List)

投げる
ConfigurationException引数の解析中にエラーが発生した場合。

解析ベストエフォート

public  parseBestEffort ( args)

引数のERROR(/List)を受け取る代替のparseBestEffort(String)メソッド

パラメーター
args

戻り値
残った引数のERROR(/List)

解析ベストエフォート

public  parseBestEffort ( args, 
                boolean forceContinue)

引数のERROR(/List)を受け取り、一部の引数が解析されない場合でも、強制的に最後まで解析を続行できる代替のparseBestEffort(String)メソッド。

パラメーター
args : 残りの引数を含むリスト。

forceContinue boolean : 一部の引数が解析されない場合でも解析を続行する場合は true。

戻り値
残った引数のERROR(/List)

解析ベストエフォート

public  parseBestEffort (String... args)

parse(String)のベストエフォート版。 ConfigurationException がスローされた場合、その例外は内部でキャプチャされ、残りの引数 (例外がスローされる原因となった引数を含む) が返されます。このメソッドはスローしません。

パラメーター
args String

戻り値
残った引数のERROR(/List)

validate必須オプション

public void validateMandatoryOptions ()

必須としてマークされたすべてのフィールドが設定されていることを検証します。

投げる
com.android.tradefed.config.ConfigurationException
ConfigurationException