ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
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" は個別に解釈されます)。 「はい」と「いいえ」は、「真」と「偽」の同義語として使用できます。

「-」で始まらず、前のオプションの必須引数ではない各文字列は、すべての連続する文字列と同様に、非オプションの位置引数です。 「--」の後の各文字列は、オプションではない位置引数です。

オプションが処理されると、オプションに対応するフィールドが更新されます。残りの位置引数は 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構成オブジェクトが正しく構成されていない場合。

公開メソッド

getInopOptions

public  getInopOptions ()

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

戻り値

getOptionHelp

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引数の解析中にエラーが発生した場合。

parseBestEffort

public  parseBestEffort ( args)

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

パラメーター
args

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

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

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

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

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

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

parseBestEffort

public  parseBestEffort (String... args)

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

パラメーター
args String

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

validateMandatoryOptions

public void validateMandatoryOptions ()

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

スロー
com.android.tradefed.config.ConfigurationException
ConfigurationException