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 フィールドに対して一意である必要があります。

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

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

単純な短いオプションは「-」に続いて短いオプション文字が続くものです。オプションに引数が必要(ブール以外のオプションに該当)な場合は、別個のパラメータとして記述できますが、必須ではありません。つまり、「-f out.txt」と「-fout.txt」はどちらも許可されます。

1 つの「-」の後に複数の短いオプションを指定できます(最後のオプションを除き、すべて引数を必要としない限り)。

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

ブール値の長いオプション「--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「Utility Syntax Guidelines」 (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 を作成します。

ArgsOptionParser(Object... optionSources)

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

パブリック メソッド

getInopOptions()

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

static String getOptionHelp(boolean importantOnly, Object optionObject)

optionObject 内のすべての Option フィールドのヘルプテキストを出力します。

parse(String... args)

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

parse( args)

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

parseBestEffort( args)

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

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)

optionObject 内のすべての Option フィールドのヘルプテキストを出力します。

各オプションのヘルプテキストは次の形式になります。

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

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

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

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

parse

public  parse (String... args)

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

パラメータ
args String

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

例外
ConfigurationException 引数の解析中にエラーが発生した場合に返されます。

parse

public  parse ( args)

引数の ERROR(/List) を取る別の parse(String) メソッド

パラメータ
args

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

例外
ConfigurationException 引数の解析中にエラーが発生した場合。

parseBestEffort

public  parseBestEffort ( args)

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

パラメータ
args

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

解析のベストエフォート

public  parseBestEffort ( args, 
                boolean forceContinue)

parseBestEffort(String) の代替メソッド。引数の ERROR(/List) を受け取り、一部の引数が解析されない場合であっても、その終了まで解析を強制的に継続させることができます。

パラメータ
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