ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
ป้อนข้อมูลในช่อง Option
จากอาร์กิวเมนต์บรรทัดคำสั่งที่แยกวิเคราะห์แล้ว
ระบบจะแยกวิเคราะห์สตริงใน String[] ที่ส่งเข้ามาจากซ้ายไปขวา สตริงแต่ละรายการจะจัดประเภทเป็นตัวเลือกแบบสั้น (เช่น "-v") ตัวเลือกแบบยาว (เช่น "--verbose") อาร์กิวเมนต์ของตัวเลือก (เช่น "out.txt" ใน "-f out.txt") หรืออาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก
อาร์กิวเมนต์ตัวเลือกแต่ละรายการต้องจับคู่กับฟิลด์ Option
อย่างน้อย 1 ฟิลด์ ตัวเลือกแบบยาวจะแมปกับชื่อ Option
และตัวเลือกแบบสั้นจะแมปกับชื่อย่อ Option
ชื่อตัวเลือกและชื่อย่อของตัวเลือกแต่ละรายการต้องไม่ซ้ำกันสำหรับช่อง Option
อื่นๆ ทั้งหมดภายในออบเจ็กต์เดียวกัน
อาร์กิวเมนต์ตัวเลือกรายการเดียวสามารถแมปกับช่อง Option
หลายช่องที่มีชื่อเดียวกันในออบเจ็กต์หลายรายการ อาร์กิวเมนต์ Option
อาจใช้เพื่ออ้างอิงช่อง Option
แบบไม่ซ้ำภายในออบเจ็กต์เดียวโดยใช้ชื่อเต็มของคลาสหรือค่าชื่อแทน OptionClass
ที่คั่นด้วย ':' เช่น
--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) { ... } ... }ดูข้อมูลเพิ่มเติมได้ที่
- หน้า man ของ getopt(1)
- โมดูล "optparse" ของ Python (http://docs.python.org/library/optparse.html)
- "หลักเกณฑ์ไวยากรณ์ยูทิลิตี" ของ POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- "มาตรฐานสำหรับอินเทอร์เฟซบรรทัดคำสั่ง" ของ GNU (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)
ดูเพิ่มเติม
สรุป
ตัวสร้างแบบสาธารณะ | |
---|---|
ArgsOptionParser(
สร้าง |
|
ArgsOptionParser(Object... optionSources)
สร้าง |
เมธอดสาธารณะ | |
---|---|
|
getInopOptions()
แสดงชุดตัวเลือกที่ไม่ได้เปลี่ยนแปลงค่าเริ่มต้นใดๆ |
static
String
|
getOptionHelp(boolean importantOnly, Object optionObject)
เอาต์พุตข้อความช่วยเหลือสำหรับฟิลด์ |
|
parse(String... args)
แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง "args" โดยตั้งค่าช่อง @Option ของ "optionSource" ที่ระบุให้กับตัวสร้าง |
|
parse(
วิธีการ |
|
parseBestEffort(
วิธีการ |
|
parseBestEffort(
วิธีการ |
|
parseBestEffort(String... args)
เวอร์ชัน |
void
|
validateMandatoryOptions()
ตรวจสอบว่าได้กรอกข้อมูลในทุกช่องที่ต้องกรอกแล้ว |
ช่างก่อสร้างสาธารณะ
ArgsOptionParser
public ArgsOptionParser (optionSources)
สร้าง ArgsOptionParser
สำหรับคอลเล็กชันออบเจ็กต์
พารามิเตอร์ | |
---|---|
optionSources |
: ออบเจ็กต์การกำหนดค่า |
โยน | |
---|---|
ConfigurationException |
หากออบเจ็กต์การกําหนดค่ากําหนดค่าไม่ถูกต้อง |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
สร้าง ArgsOptionParser
สําหรับออบเจ็กต์อย่างน้อย 1 รายการ
พารามิเตอร์ | |
---|---|
optionSources |
Object : ออบเจ็กต์การกำหนดค่า |
โยน | |
---|---|
ConfigurationException |
หากออบเจ็กต์การกําหนดค่ากําหนดค่าไม่ถูกต้อง |
วิธีการสาธารณะ
getInopOptions
publicgetInopOptions ()
แสดงผลชุดตัวเลือกที่ไม่ได้เปลี่ยนค่าเริ่มต้นใดๆ
คิกรีเทิร์น | |
---|---|
|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
เอาต์พุตข้อความช่วยเหลือสำหรับฟิลด์ Option
ทั้งหมดใน optionObject
ข้อความความช่วยเหลือสําหรับแต่ละตัวเลือกจะอยู่ในรูปแบบต่อไปนี้
[-option_shortname, --option_name] [option_description] Default: [current option field's value in optionObject]ระบบจะละเว้นข้อความ "ค่าเริ่มต้น..." หากช่องตัวเลือกเป็นค่า Null หรือว่าง
พารามิเตอร์ | |
---|---|
importantOnly |
boolean : if true พิมพ์ความช่วยเหลือสำหรับตัวเลือกที่สำคัญเท่านั้น |
optionObject |
Object : ออบเจ็กต์ที่จะพิมพ์ข้อความช่วยเหลือ |
คิกรีเทิร์น | |
---|---|
String |
สตริงที่มีข้อความความช่วยเหลือที่ใช้งานง่ายสําหรับช่องตัวเลือกทั้งหมด |
parse
publicparse (String... args)
แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง "args" เพื่อตั้งค่าช่อง @Option ของ "optionSource" ที่ให้กับตัวสร้าง
พารามิเตอร์ | |
---|---|
args |
String |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลืออยู่หลังจากประมวลผลตัวเลือกทั้งหมด |
โยน | |
---|---|
ConfigurationException |
หากเกิดข้อผิดพลาดขณะแยกวิเคราะห์อาร์กิวเมนต์ |
parse
publicparse ( args)
เมธอด parse(String)
สำรองที่มีอาร์กิวเมนต์ ERROR(/List)
รายการ
พารามิเตอร์ | |
---|---|
args |
|
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลือหลังจากประมวลผลตัวเลือกทั้งหมดแล้ว |
การขว้าง | |
---|---|
ConfigurationException |
หากเกิดข้อผิดพลาดขณะแยกวิเคราะห์อาร์กิวเมนต์ |
แยกวิเคราะห์ BestEffort
publicparseBestEffort ( args)
วิธีการ parseBestEffort(String)
สำรองที่ใช้อาร์กิวเมนต์ ERROR(/List)
พารามิเตอร์ | |
---|---|
args |
|
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
parseBestEffort
publicparseBestEffort ( args, boolean forceContinue)
วิธีการ parseBestEffort(String)
สำรองที่ใช้อาร์กิวเมนต์ ERROR(/List)
และสามารถบังคับให้แยกวิเคราะห์ต่อจนจบได้ แม้ว่าบางอาร์กิวเมนต์จะแยกวิเคราะห์ไม่ได้ก็ตาม
พารามิเตอร์ | |
---|---|
args |
: รายการที่จะมีพารามิเตอร์ที่เหลือ |
forceContinue |
boolean : จริงหากควรแยกวิเคราะห์ต่อไปแม้ว่าบางอาร์กิวเมนต์จะแยกวิเคราะห์ไม่ได้ |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
parseBestEffort
publicparseBestEffort (String... args)
parse(String)
เวอร์ชันที่ทำงานได้ดีที่สุด หากมีการส่ง ConfigurationException ระบบจะบันทึกข้อยกเว้นนั้นเป็นการภายในและแสดงผลอาร์กิวเมนต์ที่เหลือ (รวมถึงอาร์กิวเมนต์ที่ทำให้เกิดข้อยกเว้น) วิธีนี้ไม่ส่ง
พารามิเตอร์ | |
---|---|
args |
String |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
validateMandatoryOptions
public void validateMandatoryOptions ()
ตรวจสอบว่าได้กรอกข้อมูลในทุกช่องที่ต้องกรอกแล้ว
โยน | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |