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

 }

 
Xem thêm:
  • 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 cho một hoặc nhiều đối tượng.

ArgsOptionParser(Collection<Object> optionSources)

Tạo ArgsOptionParser cho một tập hợp các đối tượng.

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 Option trong optionObject.

List<String> parse(List<String> args)

Phương thức ERROR(/#parse(String. args)) thay thế nhận một List đối số

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 ERROR(/#parseBestEffort(String. args)) thay thế nhận List đối số

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.

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.

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]
 
Văn bản "Mặc định..." sẽ bị bỏ qua nếu trường lựa chọn có giá trị rỗng hoặc trống.

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