ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

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


Ayrıştırılan komut satırı bağımsız değişkenlerinden Option alanlarını doldurur.

İletilen String[] içindeki dizelerin ayrıştırma yönü soldan sağadır. Her dize kısa seçenek ("-v" gibi), uzun seçenek ("--verbose" gibi), bir seçeneğe ait bağımsız değişken ("-f out.txt" içindeki "out.txt" gibi) veya seçenek olmayan konumsal bağımsız değişken olarak sınıflandırılır.

Her seçenek bağımsız değişkeni bir veya daha fazla Option alanıyla eşlenmelidir. Uzun seçenek, Option adıyla eşlenir ve kısa seçenek, Option kısa adıyla eşlenir. Her seçenek adı ve seçenek kısa adı, aynı nesnedeki diğer tüm Option alanlarına göre benzersiz olmalıdır.

Tek bir seçenek bağımsız değişkeni, birden fazla nesnede aynı ada sahip birden fazla Option alanıyla eşlenebilir. Option bağımsız değişkenleri, tek bir nesne içindeki Option alanını benzersiz bir şekilde atıfta bulunmak için ad alanına eklenebilir. Bu işlem için söz konusu nesnenin tam sınıf adı veya OptionClass takma adı değeri, ":" ile ayrılır.

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

Basit kısa seçenek, "-" işaretinden sonra kısa seçenek karakteridir. Seçenek bir bağımsız değişken gerektiriyorsa (bu, doğru olmayan tüm seçenekler için geçerlidir) ayrı bir parametre olarak yazılabilir ancak yazılmak zorunda değildir. Yani hem "-f out.txt" hem de "-fout.txt" kabul edilir.

Tek bir "-" işaretinden sonra birden fazla kısa seçenek belirtilebilir. Bunun için, tüm seçeneklerin (muhtemelen sonuncusu hariç) bağımsız değişken gerektirmemesi gerekir.

Uzun seçenekler "--" ile başlar ve ardından birkaç karakter gelir. Seçenek için bir bağımsız değişken gerekiyorsa bu bağımsız değişken, doğrudan seçenek adından sonra "=" ile ayrılarak veya sonraki bağımsız değişken olarak yazılabilir. (Yani, "--file=out.txt" veya "--file out.txt".)

"--name" mantıksal uzun seçeneği otomatik olarak bir "--no-name" eşlemesi alır. "--flag" seçeneği verildiğinde "--flag", "--no-flag", "--flag=true" ve "--flag=false" seçeneklerinin tümü geçerlidir. Ancak "--flag true" veya "--flag false" seçeneklerine izin verilmez ("--flag" tek başına yeterli olduğundan, "true" veya "false" ayrı olarak yorumlanır). "Doğru" ve "yanlış" için eş anlamlı olarak "evet" ve "hayır"ı kullanabilirsiniz.

"-" ile başlamayan ve önceki bir seçeneğin zorunlu bağımsız değişkeni olmayan her dize, sonraki tüm dizeler gibi seçenek olmayan bir konumsal bağımsız değişkendir. "--" işaretinden sonraki her dize, seçenek olmayan bir konumsal bağımsız değişkendir.

Seçenekler işlenirken seçeneklere karşılık gelen alanlar güncellenir. Kalan konumsal bağımsız değişkenler List<String> olarak döndürülür.

Basit bir örnek verelim:

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

 }

 
Ayrıca şu makaleleri inceleyebilirsiniz:
  • getopt(1) man sayfası
  • Python'un "optparse" modülü (http://docs.python.org/library/optparse.html)
  • POSIX "Yardımcı Program Söz Dizimi Kuralları" (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • GNU "Komut Satırı Arayüzleri Standartları" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

Özet

Herkese açık kurucular

ArgsOptionParser( optionSources)

Bir nesne koleksiyonu için ArgsOptionParser oluşturur.

ArgsOptionParser(Object... optionSources)

Bir veya daha fazla nesne için ArgsOptionParser oluşturur.

Herkese açık yöntemler

getInopOptions()

Varsayılan değerleri değiştirmeyen seçenek grubunu döndürür.

static String getOptionHelp(boolean importantOnly, Object optionObject)

optionObject içindeki tüm Option alanları için yardım metnini döndürme.

parse(String... args)

"args" komut satırı bağımsız değişkenlerini ayrıştırır ve yapıcıya sağlanan "optionSource"ın @Option alanlarını ayarlar.

parse( args)

ERROR(/List) bağımsız değişkeni alan alternatif parse(String) yöntemi

parseBestEffort( args)

Bir ERROR(/List) bağımsız değişkeni alan alternatif parseBestEffort(String) yöntemi

parseBestEffort( args, boolean forceContinue)

Bir ERROR(/List) bağımsız değişkeni alan ve bazı bağımsız değişkenler ayrıştırılmasa bile sonuna kadar ayrıştırmaya devam etmeye zorlanabilen alternatif parseBestEffort(String) yöntemi.

parseBestEffort(String... args)

parse(String) için en iyi çabayla oluşturulmuş bir sürüm.

void validateMandatoryOptions()

Zorunlu olarak işaretlenen tüm alanların ayarlanıp ayarlanmadığını doğrular.

Herkese açık kurucular

ArgsOptionParser

public ArgsOptionParser ( optionSources)

Bir nesne koleksiyonu için ArgsOptionParser oluşturur.

Parametreler
optionSources : yapılandırma nesneleri.

Atışlar
ConfigurationException yapılandırma nesneleri yanlış yapılandırılmışsa.

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

Bir veya daha fazla nesne için ArgsOptionParser oluşturur.

Parametreler
optionSources Object: yapılandırma nesneleri.

Atışlar
ConfigurationException yapılandırma nesneleri yanlış yapılandırılmışsa.

Herkese açık yöntemler

getInopOptions

public  getInopOptions ()

Varsayılan değerleri değiştirmeyen seçenek grubunu döndürür.

İlerlemeler

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

optionObject içindeki tüm Option alanları için yardım metnini döndürme.

Her bir seçeneğin yardım metni aşağıdaki biçimde olmalıdır:

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
Seçenek alanı null veya boşsa "Varsayılan..." metni atlanır.

Parametreler
importantOnly boolean: true yalnızca önemli seçenekler için yardım yazdırırsa

optionObject Object: Yardım metninin basılacağı nesne

İlerlemeler
String Tüm Seçenek alanları için kullanıcı dostu yardım metni içeren bir dize

ayrıştırma

public  parse (String... args)

"args" komut satırı bağımsız değişkenlerini ayrıştırır ve yapıcıya sağlanan "optionSource"ın @Option alanlarını ayarlar.

Parametreler
args String

İlerlemeler
Tüm seçenekler işlendikten sonra kalan konumsal bağımsız değişkenlerin ERROR(/List).

Atışlar
ConfigurationException bağımsız değişkenler ayrıştırılırken hata oluştuysa.

ayrıştırma

public  parse ( args)

ERROR(/List) bağımsız değişkeni alan alternatif parse(String) yöntemi

Parametreler
args

İlerlemeler
Tüm seçenekler işlendikten sonra kalan konumsal bağımsız değişkenlerin ERROR(/List).

Atışlar
ConfigurationException bağımsız değişkenler ayrıştırılırken hata oluştuysa.

parseBestEffort

public  parseBestEffort ( args)

Bir ERROR(/List) bağımsız değişkeni alan alternatif parseBestEffort(String) yöntemi

Parametreler
args

İlerlemeler
Kalan bağımsız değişkenlerin ERROR(/List)

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Bir ERROR(/List) bağımsız değişkeni alan ve bazı bağımsız değişkenler ayrıştırılmasa bile sonuna kadar ayrıştırmaya devam etmeye zorlanabilen alternatif parseBestEffort(String) yöntemi.

Parametreler
args : Kalan bağımsız değişkenleri içeren liste.

forceContinue boolean: Bazı bağımsız değişkenler ayrıştırılamasa bile ayrıştırmaya devam edilmesi gerekiyorsa doğru değerini döndürür.

İlerlemeler
Kalan bağımsız değişkenlerin ERROR(/List)

parseBestEffort

public  parseBestEffort (String... args)

parse(String) için en iyi çabayla oluşturulmuş bir sürüm. Bir ConfigurationException oluşturulursa bu istisna dahili olarak yakalanır ve kalan bağımsız değişkenler (istisnanın oluşturulmasına neden olan bağımsız değişken dahil) döndürülür. Bu yöntemde hata atılmaz.

Parametreler
args String

İlerlemeler
Kalan bağımsız değişkenlerin ERROR(/List)

validateMandatoryOptions

public void validateMandatoryOptions ()

Zorunlu olarak işaretlenen tüm alanların ayarlanıp ayarlanmadığını doğrular.

Atışlar
com.android.tradefed.config.ConfigurationException
ConfigurationException