تجزیهگر گزینه آرگها
public class ArgsOptionParser
extends OptionSetter
| شیء جاوا | ||
| ↳ | com.android.tradefed.config.OptionSetter | |
| ↳ | com.android.tradefed.config.ArgsOptionParser | |
فیلدهای Option را از آرگومانهای خط فرمان تجزیهشده پر میکند.
رشتههای موجود در String[] ارسالی از چپ به راست تجزیه میشوند. هر رشته به عنوان یک گزینه کوتاه (مانند "-v")، یک گزینه بلند (مانند "--verbose")، یک آرگومان برای یک گزینه (مانند "out.txt" در "-f out.txt") یا یک آرگومان موقعیتی بدون گزینه طبقهبندی میشود.
هر آرگومان option باید به یک یا چند فیلد Option نگاشت شود. یک option طولانی به نام Option و یک option کوتاه به نام Option کوتاه نگاشت میشود. هر نام 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" زیر به طور جداگانه تفسیر میشود). میتوانید از "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)
- ماژول "optparse" پایتون (http://docs.python.org/library/optparse.html)
- «دستورالعملهای نحوی سودمند» POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- «استانداردهای رابطهای خط فرمان» گنو (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
همچنین ببینید:
خلاصه
سازندگان عمومی | |
|---|---|
ArgsOptionParser (Object... optionSources) یک | |
ArgsOptionParser (Collection<Object> optionSources) یک | |
روشهای عمومی | |
|---|---|
Set<String> | getInopOptions ()مجموعهای از گزینهها را برمیگرداند که هیچ مقدار پیشفرضی را تغییر ندادهاند. |
static String | getOptionHelp (boolean importantOnly, Object optionObject) متن راهنما را برای همه فیلدهای |
List<String> | parse (List<String> args) متد جایگزین |
List<String> | parse (String... args)آرگومانهای خط فرمان 'args' را تجزیه میکند و فیلدهای @Option از 'optionSource' ارائه شده به سازنده را تنظیم میکند. |
List<String> | parseBestEffort (List<String> args) متد جایگزین |
List<String> | parseBestEffort (List<String> args, boolean forceContinue) متد جایگزین |
List<String> | parseBestEffort (String... args) یک نسخه با بهترین تلاش از |
void | validateMandatoryOptions ()تأیید میکند که تمام فیلدهای علامتگذاری شده به عنوان اجباری، تنظیم شدهاند. |
سازندگان عمومی
تجزیهگر گزینه آرگها
public ArgsOptionParser (Object... optionSources)
یک ArgsOptionParser برای یک یا چند شیء ایجاد میکند.
| پارامترها | |
|---|---|
optionSources | Object : اشیاء پیکربندی. |
| پرتابها | |
|---|---|
ConfigurationException | اگر اشیاء پیکربندی به طور نادرست پیکربندی شده باشند. |
تجزیهگر گزینه آرگها
public ArgsOptionParser (Collection<Object> optionSources)
یک ArgsOptionParser برای مجموعهای از اشیاء ایجاد میکند.
| پارامترها | |
|---|---|
optionSources | Collection : اشیاء پیکربندی. |
| پرتابها | |
|---|---|
ConfigurationException | اگر اشیاء پیکربندی به طور نادرست پیکربندی شده باشند. |
روشهای عمومی
گزینههای دریافتشده
public Set<String> getInopOptions ()
مجموعهای از گزینهها را برمیگرداند که هیچ مقدار پیشفرضی را تغییر ندادهاند.
| بازگشتها | |
|---|---|
Set<String> | |
دریافت گزینه راهنما
public static String getOptionHelp (boolean importantOnly,
Object optionObject) متن راهنما را برای همه فیلدهای Option در خروجی نمایش میدهد. شیء گزینه .
متن راهنما برای هر گزینه به شکل زیر خواهد بود.
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]
| پارامترها | |
|---|---|
importantOnly | boolean : اگر true فقط برای گزینههای مهم راهنما چاپ میکند. |
optionObject | Object : شیء که متن راهنما برای آن چاپ میشود. |
| بازگشتها | |
|---|---|
String | یک رشته حاوی متن راهنمای کاربرپسند برای همه فیلدهای گزینه |
تجزیه کردن
public List<String> parse (List<String> args)
متد جایگزین ERROR(/#parse(String. args)) که List از آرگومانها را دریافت میکند
| پارامترها | |
|---|---|
args | List |
| بازگشتها | |
|---|---|
List<String> | List از آرگومانهای موقعیتی که پس از پردازش همه گزینهها باقی میمانند. |
| پرتابها | |
|---|---|
ConfigurationException | اگر خطایی در تجزیه آرگومانها رخ داد. |
تجزیه کردن
public List<String> parse (String... args)
آرگومانهای خط فرمان 'args' را تجزیه میکند و فیلدهای @Option از 'optionSource' ارائه شده به سازنده را تنظیم میکند.
| پارامترها | |
|---|---|
args | String |
| بازگشتها | |
|---|---|
List<String> | List از آرگومانهای موقعیتی که پس از پردازش همه گزینهها باقی میمانند. |
| پرتابها | |
|---|---|
ConfigurationException | اگر خطایی در تجزیه آرگومانها رخ داد. |
تجزیه بهترین تلاش
public List<String> parseBestEffort (List<String> args)
متد جایگزین ERROR(/#parseBestEffort(String. args)) که List از آرگومانها را دریافت میکند
| پارامترها | |
|---|---|
args | List |
| بازگشتها | |
|---|---|
List<String> | List از آرگومانهای باقیمانده |
تجزیه بهترین تلاش
public List<String> parseBestEffort (List<String> args,
boolean forceContinue)متد جایگزین ERROR(/#parseBestEffort(String. args)) که List از آرگومانها را دریافت میکند و میتواند مجبور شود تا پایان، حتی اگر برخی از آرگومانها تجزیه نشوند، تجزیه را ادامه دهد.
| پارامترها | |
|---|---|
args | List : لیستی که شامل آرگومانهای باقیمانده خواهد بود. |
forceContinue | boolean : اگر حتی اگر برخی از آرگومانها تجزیه نشوند، باید به تجزیه ادامه دهد، صحیح است. |
| بازگشتها | |
|---|---|
List<String> | List از آرگومانهای باقیمانده |
تجزیه بهترین تلاش
public List<String> parseBestEffort (String... args)
یک نسخه با بهترین تلاش از ERROR(/#parse(String. args)) . اگر یک ConfigurationException رخ دهد، آن استثنا به صورت داخلی ضبط میشود و آرگومانهای باقیمانده (از جمله آرگومانی که باعث بروز استثنا شده است) بازگردانده میشوند. این متد اجرا نمیشود.
| پارامترها | |
|---|---|
args | String |
| بازگشتها | |
|---|---|
List<String> | List از آرگومانهای باقیمانده |
اعتبارسنجیگزینههای اجباری
public void validateMandatoryOptions ()
تأیید میکند که تمام فیلدهای علامتگذاری شده به عنوان اجباری، تنظیم شدهاند.
| پرتابها | |
|---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException | |