ArgsOption Ayrıştırıcı

public class ArgsOptionParser
extends OptionSetter

java.lang.Nesne
   ↳ com.android.tradefed.config.OptionSetter
  \t 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 dize soldan sağa doğru ayrıştırılı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. Örneğin:

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

Basit bir kısa seçenek, "-" ve ardından kısa bir 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 sonuncu 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 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ı ayrı yorumlanır). "Doğru" ve "yanlış" için eş anlamlı olarak "evet" ve "hayır"ı kullanabilirsiniz.

"-" ile başlamayan her Dize, önceki seçeneğin zorunlu bir bağımsız değişkeni değil, tüm ardışık Dizeler gibi seçenek olmayan konumsal bir bağımsız değişkendir. "--" işaretinden sonraki her Dize, isteğe bağlı olmayan bir konum bağımsız değişkenidir.

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

 }

 
Şunlara da bakın:

  • getopt(1) man sayfası
  • Python'un "optparse" modülü (http://docs.python.org/library/optparse.html)
  • POSIX "Yardımcı Program Söz Dizimi Yönergeleri" (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)

Şu kaynakları da inceleyin:

Özet

Kamu inşaatçıları

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 oluşturucuya sağlanan "optionSource"ın @Option alanlarını ayarlar.

parse( args)

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

parseBestEffort( args)

ERROR(/List) bağımsız değişken 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ş 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 doğru yapılandırılmamış olabilir.

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 doğru yapılandırılmamış olabilir.

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 olur:

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

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

optionObject Object: İlgili yardım metninin yazdırı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)

Oluşturucuya sağlanan "optionSource"un @Option alanlarını ayarlayarak "args" komut satırı bağımsız değişkenlerini ayrıştırır.

Parametreler
args String

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

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şken 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şkenlerin ayrıştırılmasında hata oluştu.

parseBestEffort

public  parseBestEffort ( args)

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

Parametreler
args

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

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

ERROR(/List) bağımsız değişken 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) ürününün en iyi çaba sürümü. Bir ConfigurationException atılırsa bu istisna dahili olarak yakalanır ve kalan bağımsız değişkenler (istisnanın atılmasına neden olan bağımsız değişken dahil) döndürülür. Bu yöntem işe yaramaz.

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