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 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 tuỳ chọn ngắn (chẳng hạn như "-v"), một tuỳ chọn dài (chẳng hạn như "--verbose"), mộ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 phải tuỳ chọn.

Mỗi đối số tuỳ chọn phải liên kết với một hoặc nhiều trường Option. Tuỳ chọn dài liên kết với tên Option, còn tuỳ chọn ngắn liên kết với tên ngắn Option. Mỗi tên tuỳ chọn và tên ngắn của tuỳ chọn phải là duy nhất so với tất cả các trường Option khác trong cùng một đối tượng.

Một đối số tuỳ chọn có thể được liên kết đến nhiều trường Option có cùng tên trên nhiều đối tượng. Bạn có thể đặt tên không gian cho đối số Option để tham chiếu duy nhất đến một trường Option trong một đối tượng 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 ":". Ví dụ:

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

Tuỳ chọn ngắn đơn giản là dấu "-" theo sau là một ký tự tuỳ chọn ngắn. Nếu tuỳ chọn yêu cầu một đối số (đúng với mọi tuỳ chọn không phải boolean), thì tuỳ chọn đó có thể được viết 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 dấu "-" nếu tất cả (ngoại trừ có thể là lựa chọn cuối cùng) không cần đối số.

Một lựa chọn dài bắt đầu bằng "--", theo sau là một vài ký tự. Nếu tuỳ chọn yêu cầu một đối số, bạn có thể viết đối số đó ngay sau tên tuỳ chọn, phân tách bằng dấu "=" hoặc dưới dạng đối số tiếp theo. (Tức là "--file=out.txt" hoặc "--file out.txt".)

Tuỳ chọn boolean dài "--name" sẽ tự động nhận được một tuỳ chọn đồng hành "--no-name". Với tuỳ chọn "--flag", thì "--flag", "--no-flag", "--flag=true" và "--flag=false" đều hợp lệ, mặc dù không cho phép "--flag true" hoặc "--flag false" (vì "--flag" là đủ, "true" hoặc "false" sau đây được diễn giải riêng). Bạn có thể sử 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 dấu "-" và không phải là đối số bắt buộc của một tuỳ chọn trước đó đều là đối số vị trí không phải tuỳ chọn, cũng như tất cả các Chuỗi tiếp theo. Mỗi Chuỗi sau dấu "--" là một đối số vị trí không phải là tuỳ chọn.

Các trường tương ứng với các tuỳ chọn sẽ được cập nhật khi các tuỳ 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 man getopt(1)
  • Mô-đun "optparse" của Python (http://docs.python.org/library/optparse.html)
  • "Nguyên tắc 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( optionSources)

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

ArgsOptionParser(Object... optionSources)

Tạo ArgsOptionParser cho một hoặc nhiều đối tượng.

Phương thức công khai

getInopOptions()

Trả về tập hợp các tuỳ chọn không thay đổi 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.

parse(String... args)

Phân tích cú pháp đố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( args)

Phương thức parse(String) thay thế nhận ERROR(/List) đối số

parseBestEffort( args)

Phương thức parseBestEffort(String) thay thế nhận ERROR(/List) đối số

parseBestEffort( args, boolean forceContinue)

Phương thức parseBestEffort(String) thay thế nhận một ERROR(/List) của các đố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.

parseBestEffort(String... args)

Phiên bản parse(String) tốt nhất có thể.

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 ( 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 các đối tượng cấu hình được định cấu hình không đúng cách.

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.

Phương thức công khai

getInopOptions

public  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.

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

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 để 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

public  parse (String... args)

Phân tích cú pháp đố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ề
ERROR(/List) của các đối số vị trí còn lại sau khi xử lý tất cả các tuỳ chọn.

Gửi
ConfigurationException nếu xảy ra lỗi phân tích cú pháp đối số.

phân tích cú pháp

public  parse ( args)

Phương thức parse(String) thay thế nhận ERROR(/List) đối số

Tham số
args

Giá trị trả về
ERROR(/List) của các đối số vị trí còn lại sau khi xử lý tất cả các tuỳ chọn.

Gửi
ConfigurationException nếu xảy ra lỗi phân tích cú pháp đối số.

parseBestEffort

public  parseBestEffort ( args)

Phương thức parseBestEffort(String) thay thế nhận ERROR(/List) đối số

Tham số
args

Giá trị trả về
ERROR(/List) của các đối số còn lại

parseBestEffort

public  parseBestEffort ( args, 
                boolean forceContinue)

Phương thức parseBestEffort(String) thay thế nhận một ERROR(/List) của các đố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 : danh sách sẽ chứa các đối số còn lại.

forceContinue boolean: Đúng nếu cầ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ề
ERROR(/List) của các đối số còn lại

parseBestEffort

public  parseBestEffort (String... args)

Phiên bản parse(String) tốt nhất có thể. Nếu một ConfigurationException được gửi, 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 ra) sẽ được trả về. Phương thức này không gửi.

Tham số
args String

Giá trị trả về
ERROR(/List) đối số còn lại

Xác thựcbắt buộcTùy chọn

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