ArgsOptionParser
public
class
ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
ป้อนข้อมูลในช่อง Option
จากอาร์กิวเมนต์บรรทัดคำสั่งที่แยกวิเคราะห์แล้ว
สตริงในสตริงที่ส่งผ่าน[] ได้รับการแยกวิเคราะห์จากซ้ายไปขวา แต่ละสตริงจะจัดอยู่ในประเภท (เช่น "-v") ตัวเลือกแบบยาว (เช่น "--verbose") อาร์กิวเมนต์ของตัวเลือก (เช่น "out.txt" ใน "-f out.txt") หรือเป็นอาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก
อาร์กิวเมนต์ตัวเลือกแต่ละรายการต้องแมปกับช่อง Option
อย่างน้อย 1 ช่อง ตัวเลือกแบบยาวจะจับคู่กับ
ชื่อ Option
และตัวเลือกแบบสั้นจะแมปกับชื่อย่อของ Option
ชื่อและตัวเลือกแต่ละรายการ
ชื่อย่อของตัวเลือกต้องไม่ซ้ำกันเมื่อเทียบกับชื่ออื่นๆ ทั้งหมด
Option
ช่องภายในออบเจ็กต์เดียวกัน
อาร์กิวเมนต์ตัวเลือกเดียวจะจับคู่กับฟิลด์ Option
หลายช่องที่มีชื่อเดียวกันได้
ในหลายออบเจ็กต์ อาร์กิวเมนต์ Option
สามารถใช้เนมสเปซเพื่ออ้างอิง
ฟิลด์ Option
ภายในออบเจ็กต์เดียวโดยใช้ชื่อเต็มของคลาสหรือฟิลด์
ค่าชื่อแทน OptionClass
คั่นด้วย ':' ie
--classname:optionname optionvalue or --optionclassalias:optionname optionvalue.
ตัวเลือกสั้นๆ ง่ายๆ คือ "-" ตามด้วยอักขระตัวเลือกสั้นๆ หากตัวเลือกต้องมี (ซึ่งเป็นจริงสำหรับตัวเลือกที่ไม่ใช่บูลีน) อาจมีการเขียนเป็นพารามิเตอร์แยกต่างหาก แต่ไม่จําเป็น นั่นคือ "-f out.txt" และ "-fout.txt" ทั้ง 2 ประเภท
คุณสามารถระบุตัวเลือกสั้นๆ หลายรายการหลังเครื่องหมาย "-" เดียวได้ นานเท่าใดก็ได้ (ยกเว้น รายการสุดท้าย) จะไม่จำเป็นต้องมีอาร์กิวเมนต์
ตัวเลือกที่ยาวจะขึ้นต้นด้วย "--" ตามด้วยอักขระหลายๆ ตัว หากตัวเลือกต้องมี อาจเขียนขึ้นหลังชื่อตัวเลือกโดยตรง คั่นด้วยเครื่องหมาย "=" หรือต่อท้ายชื่อตัวเลือก อาร์กิวเมนต์ (ซึ่งก็คือ "--file=out.txt" หรือ "--file out.txt")
ตัวเลือกบูลีนแบบยาว "--name" จะได้รับข้อความ "--ไม่มีชื่อ" โดยอัตโนมัติ ที่แสดงร่วม มีตัวเลือก "--flag" ตามด้วย "--flag", "--no-flag", "--flag=true" และ "--flag=false" ถูกต้องทั้งหมด ไม่ใช่ "--flag true" หรือ "--flag false" ได้รับอนุญาต (เนื่องจาก "--แจ้งว่าไม่เหมาะสม" เพียงอย่างเดียวก็เพียงพอแล้ว ต่อจาก "true" หรือ "เท็จ" จะตีความแยกกัน) คุณใช้คำว่า "ใช่" ได้ และ "ไม่" เป็นคำพ้องความหมาย สำหรับ "จริง" และ "เท็จ"
แต่ละสตริงไม่ได้ขึ้นต้นด้วย "-" และไม่ใช่อาร์กิวเมนต์ที่จำเป็นของตัวเลือกก่อนหน้าคือ อาร์กิวเมนต์ตำแหน่งที่ไม่ใช่ตัวเลือก เช่นเดียวกับสตริงต่อเนื่องทั้งหมด สตริงแต่ละรายการหลัง "--" เป็น อาร์กิวเมนต์ตำแหน่งแบบไม่ใช่ตัวเลือก
ระบบจะอัปเดตช่องที่เกี่ยวข้องกับตัวเลือกเมื่อมีการประมวลผลตัวเลือก ส่วนที่เหลือ อาร์กิวเมนต์ตำแหน่งจะแสดงผลเป็น 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) { ... } ... }
- หน้าเริ่มต้นใช้งาน getopt(1)
- "การเพิ่มประสิทธิภาพ" ของ Python โมดูล (http://docs.python.org/library/optparse.html)
- "หลักเกณฑ์ไวยากรณ์ยูทิลิตี" POSIX (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
- GNU "Standards for Command Line Interfaces" (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]
พารามิเตอร์ | |
---|---|
importantOnly |
boolean : หาก true พิมพ์เฉพาะความช่วยเหลือสำหรับตัวเลือกสำคัญ |
optionObject |
Object : วัตถุที่จะพิมพ์ข้อความช่วยเหลือ |
คิกรีเทิร์น | |
---|---|
String |
สตริงที่มีข้อความช่วยเหลือที่ใช้ง่ายสำหรับช่อง "ตัวเลือก" ทั้งหมด |
แยกวิเคราะห์
publicparse (String... args)
แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง "args" เพื่อตั้งค่าฟิลด์ @Option ของ "optionSource" ให้กับผู้สร้าง
พารามิเตอร์ | |
---|---|
args |
String |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลืออยู่หลังจากประมวลผลตัวเลือกทั้งหมด |
การขว้าง | |
---|---|
ConfigurationException |
หากเกิดข้อผิดพลาดในการแยกวิเคราะห์อาร์กิวเมนต์ |
แยกวิเคราะห์
publicparse ( args)
เมธอด parse(String)
สำรองที่มีอาร์กิวเมนต์ ERROR(/List)
รายการ
พารามิเตอร์ | |
---|---|
args |
|
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ตำแหน่งที่เหลืออยู่หลังจากประมวลผลตัวเลือกทั้งหมด |
การขว้าง | |
---|---|
ConfigurationException |
หากเกิดข้อผิดพลาดในการแยกวิเคราะห์อาร์กิวเมนต์ |
แยกวิเคราะห์ BestEffort
publicparseBestEffort ( args)
เมธอด parseBestEffort(String)
สำรองที่ใช้เวลา ERROR(/List)
ของ
อาร์กิวเมนต์
พารามิเตอร์ | |
---|---|
args |
|
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
แยกวิเคราะห์ BestEffort
publicparseBestEffort ( args, boolean forceContinue)
เมธอด parseBestEffort(String)
สำรองที่ใช้เวลา ERROR(/List)
ของ
อาร์กิวเมนต์ และอาจบังคับให้แยกวิเคราะห์ต่อจนจบ แม้ว่าอาร์กิวเมนต์บางรายการจะไม่แยกวิเคราะห์ก็ตาม
แยกวิเคราะห์
พารามิเตอร์ | |
---|---|
args |
: รายการที่จะมีอาร์กิวเมนต์ด้านซ้าย |
forceContinue |
boolean : เป็นจริงหากควรแยกวิเคราะห์ต่อไปแม้ว่าอาร์กิวเมนต์บางรายการจะไม่แยกวิเคราะห์ก็ตาม |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
แยกวิเคราะห์ BestEffort
publicparseBestEffort (String... args)
parse(String)
เวอร์ชันที่ทำงานได้ดีที่สุด หาก ConfigurationException คือ
ข้อยกเว้นดังกล่าวจะได้รับการบันทึกภายใน และอาร์กิวเมนต์ที่เหลือ (รวมถึง
อาร์กิวเมนต์ซึ่งทำให้เกิดข้อยกเว้น) จะถูกส่งคืน วิธีนี้ไม่ส่ง
พารามิเตอร์ | |
---|---|
args |
String |
คิกรีเทิร์น | |
---|---|
|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
VerifyMandatoryOptions
public void validateMandatoryOptions ()
ตรวจสอบว่าได้ตั้งค่าทุกฟิลด์ที่ทำเครื่องหมายว่าบังคับแล้ว
การขว้าง | |
---|---|
|
com.android.tradefed.config.ConfigurationException |
ConfigurationException |