Trình phân tích cú pháp ArgsOption
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ừ đối số dòng lệnh được phân tích cú pháp.
Các chuỗi trong Chuỗi truyền vào[] đượ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 chuỗi tuỳ chọn (chẳng hạn như "-v"), tuỳ chọn dài (chẳng hạn như "--chi tiết"), đối số cho một tuỳ chọn (chẳng hạn như "out.txt" trong "-f out.txt") hoặc một đối số vị trí không tùy chọn.
Mỗi đối số tuỳ chọn phải liên kết đến một hoặc nhiều trường Option
. Lựa chọn dài liên kết với
Tên Option
và một tuỳ chọn ngắn liên kết với tên ngắn Option
. Tên từng lựa chọn và
tên ngắn của lựa chọn phải là duy nhất so với tất cả các
Các trường Option
trong cùng một đối tượng.
Một đối số lựa chọn 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 không gian 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 dấu ':'. tức là
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
Một tuỳ chọn ngắn gọn đơn giản là "-" theo sau là một ký tự tuỳ chọn ngắn. Nếu lựa chọn này yêu cầu đối số (đúng với bất kỳ tùy chọn không phải boolean nào), nó có thể được viết dưới dạng một tham số riêng biệt, nhưng không cần thiết. Tức là "-f out.txt" và "-fout.txt" đều có thể chấp nhận được.
Có thể chỉ định nhiều tuỳ chọn ngắn sau một dấu "-" miễn là tất cả (ngoại trừ có thể là phương thức cuối cùng) không yêu cầu đối số.
Một lựa chọn dài bắt đầu bằng "--" theo sau là vài ký tự. Nếu lựa chọn này yêu cầu đối số, nó có thể được viết ngay sau tên tuỳ chọn, phân tách bằng dấu "=" hoặc ở đối số. ("--file=out.txt" hoặc "--file out.txt".)
Một tuỳ chọn boolean dài "--name" tự động nhận '--no-name' đồng hành. Đưa ra một lựa chọn "--flag", sau đó, "--flag", "--no-flag", "--flag=true" và "--flag=false" đều hợp lệ, mặc dù không phải "--flag true" cũng như "--flag false" được phép (vì bản thân "--flag" là đủ, nên sau "true" hoặc "false" sẽ được diễn giải riêng). Bạn có thể sử dụng "yes" và "no" dưới dạng 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 tùy chọn trước đó là đối số vị trí không tùy chọn, cũng như tất cả các Chuỗi liên tiếp. Mỗi chuỗi sau "--" là đối số vị trí không tùy chọn.
Các trường tương ứng với lựa chọn sẽ được cập nhật khi lựa chọn được xử lý. Còn lại các đối số vị trí đượ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 getopt(1) man
- "optparse" của Python mô-đun (http://docs.python.org/library/optparse.html)
- "Hướng dẫn về cú pháp đối với 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" 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(
Tạo |
|
ArgsOptionParser(Object... optionSources)
Tạo |
Phương thức công khai | |
---|---|
|
getInopOptions()
Trả về tập hợp các tuỳ 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 |
|
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. |
|
parse(
Phương thức |
|
parseBestEffort(
Phương thức |
|
parseBestEffort(
Phương thức |
|
parseBestEffort(String... args)
Phiên bản |
void
|
validateMandatoryOptions()
Kiểm tra để đảm bảo 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
Trình phân tích cú pháp ArgsOption
public ArgsOptionParser (optionSources)
Tạo ArgsOptionParser
cho một tập hợp đối tượng.
Tham số | |
---|---|
optionSources |
: các đối tượng cấu hình. |
Gửi | |
---|---|
ConfigurationException |
nếu đối tượng cấu hình được định cấu hình không đúng cách. |
Trình phân tích cú pháp ArgsOption
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 đố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
publicgetInopOptions ()
Trả về tập hợp các tuỳ chọn không thay đổi bất kỳ giá trị mặc định nào.
Giá trị trả về | |
---|---|
|
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 tuỳ chọn sẽ có định dạng 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 tuỳ chọn quan trọng |
optionObject |
Object : đối tượng cần in văn bản trợ giúp |
Giá trị trả về | |
---|---|
String |
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 Tuỳ chọn |
phân tích cú pháp
publicparse (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ề | |
---|---|
|
một ERROR(/List) đối số vị trí còn lại sau khi xử lý tất cả lựa chọn. |
Gửi | |
---|---|
ConfigurationException |
nếu xảy ra lỗi khi phân tích cú pháp đối số. |
phân tích cú pháp
publicparse ( args)
Phương thức parse(String)
thay thế sử dụng ERROR(/List)
đối số
Tham số | |
---|---|
args |
|
Giá trị trả về | |
---|---|
|
một ERROR(/List) đối số vị trí còn lại sau khi xử lý tất cả lựa chọn. |
Gửi | |
---|---|
ConfigurationException |
nếu xảy ra lỗi khi phân tích cú pháp đối số. |
phân tích cú phápBestEffort
publicparseBestEffort ( args)
Phương thức parseBestEffort(String)
thay thế, mất ERROR(/List)
đối số
Tham số | |
---|---|
args |
|
Giá trị trả về | |
---|---|
|
ERROR(/List) trong số các đối số còn lại |
phân tích cú phápBestEffort
publicparseBestEffort ( args, boolean forceContinue)
Phương thức parseBestEffort(String)
thay thế, mất ERROR(/List)
đối số và có thể buộc phải tiếp tục phân tích cú pháp cho đến cuối cùng, ngay cả khi một số đối số không
phân tích cú pháp.
Tham số | |
---|---|
args |
: danh sách chứa các đối số còn lại ở trên. |
forceContinue |
boolean : Đúng nếu 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ề | |
---|---|
|
ERROR(/List) trong số các đối số còn lại |
phân tích cú phápBestEffort
publicparseBestEffort (String... args)
Phiên bản parse(String)
có hiệu suất tốt nhất. Nếu một ConfigurationException là
đã 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
khiến cho ngoại lệ được gửi) được trả về. Phương thức này không gửi.
Tham số | |
---|---|
args |
String |
Giá trị trả về | |
---|---|
|
ERROR(/List) trong số các đối số còn lại |
Xác thựcbắt buộcOptions
public void validateMandatoryOptions ()
Kiểm tra để đảm bảo 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 |