ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
| java.lang.Object | ||
| ↳ | com.android.tradefed.config.OptionSetter | |
| ↳ | com.android.tradefed.config.ArgsOptionParser | |
Điền các trường Option từ các đối số dòng lệnh đã phân tích cú pháp.
Các chuỗi trong String[] được truyền vào sẽ được phân tích cú pháp từ trái sang phải. Mỗi chuỗi được phân loại là một lựa chọn ngắn (chẳng hạn như "-v"), một lựa chọn dài (chẳng hạn như "--verbose"), một đối số cho lựa chọn (chẳng hạn như "out.txt" trong "-f out.txt") hoặc một đối số vị trí không phải là lựa chọn.
Mỗi đối số lựa chọn phải liên kết với một hoặc nhiều trường Option. Lựa chọn dài tương ứng với tên Option và lựa chọn ngắn tương ứng với tên ngắn Option. Mỗi tên lựa chọn và tên lựa chọn ngắn phải là duy nhất đối với tất cả các trường Option khác trong cùng một đối tượng.
Một đối số lựa chọn duy nhất có thể được liên kết với nhiều trường Option có cùng tên trên nhiều đối tượng. Các đối số Option có thể được đặt tên để tham chiếu duy nhất đến một trường Option trong một đối tượng duy nhất bằng cách sử dụng tên lớp đầy đủ của đối tượng đó hoặc giá trị bí danh OptionClass được phân tách bằng ":". tức là
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Lựa chọn ngắn đơn giản là "-" theo sau là một ký tự lựa chọn ngắn. Nếu lựa chọn yêu cầu một đối số (đúng với mọi lựa chọn không phải là boolean), thì bạn có thể viết đối số đó dưới dạng một tham số riêng biệt, nhưng không bắt buộc. Tức là cả "-f out.txt" và "-fout.txt" đều được chấp nhận.
Bạn có thể chỉ định nhiều tuỳ chọn ngắn sau một "-" duy nhất, miễn là tất cả (ngoại trừ tuỳ chọn cuối cùng) không yêu cầu đối số.
Lựa chọn dài bắt đầu bằng "--" theo sau là một số ký tự. Nếu cần đối số, bạn có thể viết trực tiếp sau tên tuỳ chọn, phân tách bằng "=" hoặc dưới dạng đối số tiếp theo. (Tức là "--file=out.txt" hoặc "--file out.txt".)
Một lựa chọn dài kiểu boolean "--name" sẽ tự động có một lựa chọn đồng hành "--no-name". Nếu có lựa chọn "--flag", thì "--flag", "--no-flag", "--flag=true" và "--flag=false" đều hợp lệ, mặc dù không được phép dùng "--flag true" hoặc "--flag false" (vì "--flag" tự nó là đủ, "true" hoặc "false" sau đây sẽ được diễn giải riêng). Bạn có thể dùng "yes" và "no" làm từ đồng nghĩa cho "true" và "false".
Mỗi chuỗi không bắt đầu bằng "-" và không phải là đối số bắt buộc của một lựa chọn trước đó là đối số vị trí không phải lựa chọn, cũng như tất cả các chuỗi liên tiếp. Mỗi chuỗi sau "--" là một đối số vị trí không phải là tuỳ chọn.
Các trường tương ứng với lựa chọn sẽ được cập nhật khi các lựa chọn đó được xử lý. Mọi đối số vị trí còn lại đều được trả về dưới dạng List<String>.
Sau đây là một ví dụ đơn giản:
// 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) {
...
}
...
}
- trang hướng dẫn getopt(1)
- Mô-đun "optparse" của Python (http://docs.python.org/library/optparse.html)
- "Nguyên tắc về cú pháp tiện ích" của POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- "Tiêu chuẩn cho giao diện dòng lệnh" của GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
Xem thêm:
Tóm tắt
Hàm khởi tạo công khai | |
|---|---|
ArgsOptionParser(Object... optionSources)
Tạo |
|
ArgsOptionParser(Collection<Object> optionSources)
Tạo |
|
Phương thức công khai | |
|---|---|
Set<String>
|
getInopOptions()
Trả về tập hợp các lựa chọn không thay đổi bất kỳ giá trị mặc định nào. |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
Xuất văn bản trợ giúp cho tất cả các trường |
List<String>
|
parse(List<String> args)
Phương thức |
List<String>
|
parse(String... args)
Phân tích cú pháp các đối số dòng lệnh "args", đặt các trường @Option của "optionSource" được cung cấp cho hàm khởi tạo. |
List<String>
|
parseBestEffort(List<String> args)
Phương thức |
List<String>
|
parseBestEffort(List<String> args, boolean forceContinue)
Phương thức |
List<String>
|
parseBestEffort(String... args)
Phiên bản |
void
|
validateMandatoryOptions()
Xác thực rằng bạn đã đặt tất cả các trường được đánh dấu là bắt buộc. |
Hàm khởi tạo công khai
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
Tạo ArgsOptionParser cho một hoặc nhiều đối tượng.
| Tham số | |
|---|---|
optionSources |
Object: các đối tượng cấu hình. |
| Gửi | |
|---|---|
ConfigurationException |
nếu các đối tượng cấu hình được định cấu hình không đúng cách. |
ArgsOptionParser
public ArgsOptionParser (Collection<Object> optionSources)
Tạo ArgsOptionParser cho một tập hợp các đối tượng.
| Tham số | |
|---|---|
optionSources |
Collection: các đối tượng cấu hình. |
| Gửi | |
|---|---|
ConfigurationException |
nếu các đối tượng cấu hình được định cấu hình không đúng cách. |
Phương thức công khai
getInopOptions
public Set<String> getInopOptions ()
Trả về tập hợp các lựa chọn không thay đổi bất kỳ giá trị mặc định nào.
| Giá trị trả về | |
|---|---|
Set<String> |
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly,
Object optionObject)Xuất văn bản trợ giúp cho tất cả các trường Option trong optionObject.
Văn bản trợ giúp cho mỗi lựa chọn sẽ có dạng như sau
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]
| Tham số | |
|---|---|
importantOnly |
boolean: nếu true chỉ in trợ giúp cho các lựa chọn quan trọng |
optionObject |
Object: đối tượng để in văn bản trợ giúp |
| Giá trị trả về | |
|---|---|
String |
một chuỗi chứa văn bản trợ giúp thân thiện với người dùng cho tất cả các trường Option |
phân tích cú pháp
public List<String> parse (List<String> args)
Phương thức ERROR(/#parse(String. args)) thay thế nhận một List đối số
| Tham số | |
|---|---|
args |
List |
| Giá trị trả về | |
|---|---|
List<String> |
List của các đối số vị trí còn lại sau khi xử lý tất cả các lựa chọn. |
| Gửi | |
|---|---|
ConfigurationException |
nếu xảy ra lỗi khi phân tích cú pháp các đối số. |
phân tích cú pháp
public List<String> parse (String... args)
Phân tích cú pháp các đối số dòng lệnh "args", đặt các trường @Option của "optionSource" được cung cấp cho hàm khởi tạo.
| Tham số | |
|---|---|
args |
String |
| Giá trị trả về | |
|---|---|
List<String> |
List của các đối số vị trí còn lại sau khi xử lý tất cả các lựa chọn. |
| Gửi | |
|---|---|
ConfigurationException |
nếu xảy ra lỗi khi phân tích cú pháp các đối số. |
parseBestEffort
public List<String> parseBestEffort (List<String> args)
Phương thức ERROR(/#parseBestEffort(String. args)) thay thế nhận List đối số
| Tham số | |
|---|---|
args |
List |
| Giá trị trả về | |
|---|---|
List<String> |
List của các đối số còn lại |
parseBestEffort
public List<String> parseBestEffort (List<String> args,
boolean forceContinue)Phương thức ERROR(/#parseBestEffort(String. args)) thay thế nhận một List đối số và có thể buộc tiếp tục phân tích cú pháp cho đến khi kết thúc, ngay cả khi một số đối số không phân tích cú pháp.
| Tham số | |
|---|---|
args |
List: danh sách sẽ chứa các đối số còn lại. |
forceContinue |
boolean: True nếu bạn nên tiếp tục phân tích cú pháp ngay cả khi một số đối số không phân tích cú pháp. |
| Giá trị trả về | |
|---|---|
List<String> |
List của các đối số còn lại |
parseBestEffort
public List<String> parseBestEffort (String... args)
Phiên bản ERROR(/#parse(String. args)) được cung cấp trong khả năng tốt nhất. Nếu ConfigurationException được gửi, thì ngoại lệ đó sẽ được ghi lại nội bộ và các đối số còn lại (bao gồm cả đối số khiến ngoại lệ được gửi) sẽ được trả về. Phương thức này không gửi lỗi.
| Tham số | |
|---|---|
args |
String |
| Giá trị trả về | |
|---|---|
List<String> |
List của các đối số còn lại |
validateMandatoryOptions
public void validateMandatoryOptions ()
Xác thực rằng bạn đã đặt tất cả các trường được đánh dấu là bắt buộc.
| Gửi | |
|---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |
|