ArgsOptionParser
public class ArgsOptionParser
extends OptionSetter
java.lang.Object | ||
↳ | com.android.tradefed.config.OptionSetter | |
↳ | com.android.tradefed.config.ArgsOptionParser |
เติมฟิลด์ Option
จากอาร์กิวเมนต์บรรทัดคำสั่งที่แยกวิเคราะห์
Option
ตั้งแต่หนึ่งรายการขึ้นไป ตัวเลือกแบบยาวจะจับคู่กับชื่อ 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") ตัวเลือกแบบยาวบูลีน '--ชื่อ' จะได้รับตัวแสดงร่วม '--no-name' โดยอัตโนมัติ เมื่อเลือกตัวเลือก "--flag" ดังนั้น "--flag", "--no-flag", "--flag=true" และ "--flag=false" ล้วนถูกต้อง แม้ว่าจะไม่ใช่ "--flag" ก็ตาม true" หรือ "--flag false" ได้รับอนุญาต (เนื่องจาก "--flag" เพียงอย่างเดียวก็เพียงพอแล้ว คำว่า "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) { ... } ... }ดูเพิ่มเติมที่:
- หน้าคน 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 ( optionSources) ArgsOptionParser ( optionSources) สร้าง | |
ArgsOptionParser (Object... optionSources) สร้าง |
วิธีการสาธารณะ | |
---|---|
getInopOptions () ส่งกลับชุดตัวเลือกที่ไม่ได้เปลี่ยนค่าเริ่มต้นใดๆ | |
static String | getOptionHelp (boolean importantOnly, Object optionObject) ข้อความวิธีใช้เอาท์พุตสำหรับช่อง |
parse (String... args) แยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง 'args' โดยตั้งค่าฟิลด์ @Option ของ 'optionSource' ที่มอบให้กับ Constructor | |
parse ( args) parse ( args) วิธี | |
parseBestEffort ( args) parseBestEffort ( args) วิธี | |
parseBestEffort ( args, boolean forceContinue) parseBestEffort ( args, boolean forceContinue) วิธี | |
parseBestEffort (String... args) | |
void | validateMandatoryOptions () ตรวจสอบว่ามีการตั้งค่าฟิลด์ทั้งหมดที่ทำเครื่องหมายว่าบังคับแล้ว |
ผู้รับเหมาก่อสร้างสาธารณะ
ArgsOptionParser
public ArgsOptionParser (optionSources)
สร้าง ArgsOptionParser
สำหรับคอลเลกชันของวัตถุ
พารามิเตอร์ | |
---|---|
optionSources |
ขว้าง | |
---|---|
ConfigurationException | หากมีการกำหนดค่าออบเจ็กต์การกำหนดค่าไม่ถูกต้อง |
ArgsOptionParser
public ArgsOptionParser (Object... optionSources)
สร้าง ArgsOptionParser
สำหรับวัตถุอย่างน้อยหนึ่งรายการ
พารามิเตอร์ | |
---|---|
optionSources | Object : วัตถุกำหนดค่า |
ขว้าง | |
---|---|
ConfigurationException | หากมีการกำหนดค่าออบเจ็กต์การกำหนดค่าไม่ถูกต้อง |
วิธีการสาธารณะ
getInopOptions
publicgetInopOptions ()
ส่งกลับชุดตัวเลือกที่ไม่ได้เปลี่ยนค่าเริ่มต้นใดๆ
การส่งคืน | |
---|---|
getOptionHelp
public static String getOptionHelp (boolean importantOnly, Object optionObject)
ข้อความวิธีใช้เอาท์พุตสำหรับช่อง Option
ทั้งหมดใน ตัวเลือกวัตถุ .
[-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' ที่มอบให้กับ Constructor
พารามิเตอร์ | |
---|---|
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 บางส่วนจะไม่แยกวิเคราะห์ก็ตาม
พารามิเตอร์ | |
---|---|
args | |
forceContinue | boolean : เป็นจริงหากควรแยกวิเคราะห์ต่อไป แม้ว่าบาง args จะไม่แยกวิเคราะห์ก็ตาม |
การส่งคืน | |
---|---|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
แยกวิเคราะห์BestEffort
publicparseBestEffort (String... args)
parse(String)
เวอร์ชันความพยายามที่ดีที่สุด หาก ConfigurationException ถูกส่งออกไป ข้อยกเว้นนั้นจะถูกบันทึกภายใน และอาร์กิวเมนต์ที่เหลือ (รวมถึงอาร์กิวเมนต์ที่ทำให้เกิดข้อยกเว้นจะถูกส่งกลับ) จะถูกส่งกลับ วิธีนี้ไม่โยน
พารามิเตอร์ | |
---|---|
args | String |
การส่งคืน | |
---|---|
ERROR(/List) ของอาร์กิวเมนต์ที่เหลือ |
ตรวจสอบตัวเลือกบังคับ
public void validateMandatoryOptions ()
ตรวจสอบว่ามีการตั้งค่าฟิลด์ทั้งหมดที่ทำเครื่องหมายว่าบังคับแล้ว
ขว้าง | |
---|---|
| com.android.tradefed.config.ConfigurationException |
ConfigurationException |