ArgsOptionParser

public class ArgsOptionParser
extends OptionSetter

java.lang.Object
com.android.tradefed.config.OptionSetter
com.android.tradefed.config.ArgsOptionParser


পার্স করা কমান্ড লাইন আর্গুমেন্ট থেকে Option ফিল্ডগুলি পূরণ করে।

পাস করা String[]-এর ভেতরের স্ট্রিংগুলো বাম থেকে ডানে পার্স করা হয়। প্রতিটি স্ট্রিংকে একটি সংক্ষিপ্ত অপশন (যেমন "-v"), একটি দীর্ঘ অপশন (যেমন "--verbose"), কোনো অপশনের আর্গুমেন্ট (যেমন "-f out.txt"-এর মধ্যে "out.txt"), অথবা একটি নন-অপশন পজিশনাল আর্গুমেন্ট হিসেবে শ্রেণীবদ্ধ করা হয়।

প্রতিটি অপশন আর্গুমেন্টকে অবশ্যই এক বা একাধিক 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"।)

একটি বুলিয়ান লং অপশন '--name'-এর সাথে স্বয়ংক্রিয়ভাবে একটি '--no-name' সঙ্গী যুক্ত হয়ে যায়। একটি অপশন "--flag" দেওয়া থাকলে, "--flag", "--no-flag", "--flag=true" এবং "--flag=false" সবগুলোই বৈধ, যদিও "--flag true" বা "--flag false" অনুমোদিত নয় (যেহেতু শুধুমাত্র "--flag" যথেষ্ট, তাই এর পরের "true" বা "false" আলাদাভাবে ব্যাখ্যা করা হয়)। আপনি "true" এবং "false"-এর প্রতিশব্দ হিসেবে "yes" এবং "no" ব্যবহার করতে পারেন।

প্রতিটি স্ট্রিং যা "-" চিহ্ন দিয়ে শুরু হয় না এবং পূর্ববর্তী কোনো অপশনের আবশ্যক আর্গুমেন্ট নয়, তা একটি নন-অপশন পজিশনাল আর্গুমেন্ট; এর পরবর্তী সমস্ত স্ট্রিং-ও তাই। "--" চিহ্নের পরের প্রতিটি স্ট্রিং একটি নন-অপশন পজিশনাল আর্গুমেন্ট।

অপশনগুলো প্রসেস হওয়ার সাথে সাথে সেগুলোর সংশ্লিষ্ট ফিল্ডগুলো আপডেট করা হয়। অবশিষ্ট যেকোনো পজিশনাল আর্গুমেন্ট একটি 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' মডিউল (http://docs.python.org/library/optparse.html)
  • POSIX "ইউটিলিটি সিনট্যাক্স গাইডলাইনস" (http://www.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap12.html#tag_12_02)
  • জিএনইউ "কমান্ড লাইন ইন্টারফেসের মানদণ্ড" (http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces)

আরও দেখুন:

সারসংক্ষেপ

সরকারি নির্মাণকারী

ArgsOptionParser (Object... optionSources)

এক বা একাধিক অবজেক্টের জন্য একটি ArgsOptionParser তৈরি করে।

ArgsOptionParser (Collection<Object> optionSources)

অবজেক্টের একটি সংগ্রহের জন্য একটি ArgsOptionParser তৈরি করে।

জনসাধারণের পদ্ধতি

Set<String> getInopOptions ()

সেইসব অপশনের সেট ফেরত দেয় যেগুলো কোনো ডিফল্ট মান পরিবর্তন করেনি।

static String getOptionHelp (boolean importantOnly, Object optionObject)

সমস্ত Option ফিল্ডের জন্য আউটপুট সাহায্য টেক্সট বিকল্পবস্তু .

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

ERROR(/#parse(String. args)) এর বিকল্প মেথড যা আর্গুমেন্টের একটি List গ্রহণ করে

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

কমান্ড-লাইন আর্গুমেন্ট 'args' পার্স করে এবং কনস্ট্রাক্টরে প্রদত্ত 'optionSource'-এর @Option ফিল্ডগুলো সেট করে।

List<String> parseBestEffort (List<String> args)

ERROR(/#parseBestEffort(String. args)) এর বিকল্প মেথড যা আর্গুমেন্টের একটি List গ্রহণ করে

List<String> parseBestEffort (List<String> args, boolean forceContinue)

ERROR(/#parseBestEffort(String. args)) এর একটি বিকল্প মেথড, যা আর্গুমেন্টের একটি List গ্রহণ করে এবং কিছু আর্গুমেন্ট পার্স না হলেও শেষ পর্যন্ত পার্সিং চালিয়ে যেতে বাধ্য করা যায়।

List<String> parseBestEffort (String... args)

ERROR(/#parse(String. args)) -এর একটি সর্বোত্তম প্রচেষ্টা সংস্করণ।

void validateMandatoryOptions ()

বাধ্যতামূলক হিসেবে চিহ্নিত সমস্ত ফিল্ড পূরণ করা হয়েছে কিনা তা যাচাই করে।

সরকারি নির্মাণকারী

ArgsOptionParser

public ArgsOptionParser (Object... optionSources)

এক বা একাধিক অবজেক্টের জন্য একটি ArgsOptionParser তৈরি করে।

প্যারামিটার
optionSources Object : কনফিগারেশন অবজেক্টগুলো।

নিক্ষেপ
ConfigurationException যদি কনফিগারেশন অবজেক্টগুলো ভুলভাবে কনফিগার করা থাকে।

ArgsOptionParser

public ArgsOptionParser (Collection<Object> optionSources)

অবজেক্টের একটি সংগ্রহের জন্য একটি ArgsOptionParser তৈরি করে।

প্যারামিটার
optionSources Collection : কনফিগারেশন অবজেক্টগুলো।

নিক্ষেপ
ConfigurationException যদি কনফিগারেশন অবজেক্টগুলো ভুলভাবে কনফিগার করা থাকে।

জনসাধারণের পদ্ধতি

getInopOptions

public Set<String> getInopOptions ()

সেইসব অপশনের সেট ফেরত দেয় যেগুলো কোনো ডিফল্ট মান পরিবর্তন করেনি।

ফেরত
Set<String>

getOptionHelp

public static String getOptionHelp (boolean importantOnly, 
                Object optionObject)

সমস্ত Option ফিল্ডের জন্য আউটপুট সাহায্য টেক্সট বিকল্পবস্তু .

প্রতিটি বিকল্পের জন্য সহায়ক লেখাটি নিম্নলিখিত বিন্যাসে থাকবে।

   [-option_shortname, --option_name]          [option_description] Default:
   [current option field's value in optionObject]
 
অপশন ফিল্ডটি null বা খালি থাকলে 'Default...' লেখাটি বাদ দেওয়া হবে।

প্যারামিটার
importantOnly boolean : যদি true তবে শুধু গুরুত্বপূর্ণ অপশনগুলোর জন্য সাহায্য প্রিন্ট করবে।

optionObject Object : যে অবজেক্টটির জন্য সাহায্যমূলক টেক্সট প্রিন্ট করা হবে

ফেরত
String সমস্ত অপশন ফিল্ডের জন্য ব্যবহারকারী-বান্ধব সহায়ক টেক্সট সম্বলিত একটি স্ট্রিং।

পার্স

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

ERROR(/#parse(String. args)) এর বিকল্প মেথড যা আর্গুমেন্টের একটি List গ্রহণ করে

প্যারামিটার
args List

ফেরত
List<String> সমস্ত অপশন প্রক্রিয়াকরণের পর অবশিষ্ট পজিশনাল আর্গুমেন্টগুলোর একটি List

নিক্ষেপ
ConfigurationException আর্গুমেন্টগুলো পার্স করার সময় কোনো ত্রুটি ঘটলে

পার্স

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

কমান্ড-লাইন আর্গুমেন্ট 'args' পার্স করে এবং কনস্ট্রাক্টরে প্রদত্ত 'optionSource'-এর @Option ফিল্ডগুলো সেট করে।

প্যারামিটার
args String

ফেরত
List<String> সমস্ত অপশন প্রক্রিয়াকরণের পর অবশিষ্ট পজিশনাল আর্গুমেন্টগুলোর একটি List

নিক্ষেপ
ConfigurationException আর্গুমেন্টগুলো পার্স করার সময় কোনো ত্রুটি ঘটলে

parseBestEffort

public List<String> parseBestEffort (List<String> args)

ERROR(/#parseBestEffort(String. args)) এর বিকল্প মেথড যা আর্গুমেন্টের একটি List গ্রহণ করে

প্যারামিটার
args List

ফেরত
List<String> অবশিষ্ট যুক্তিগুলির একটি List

parseBestEffort

public List<String> parseBestEffort (List<String> args, 
                boolean forceContinue)

ERROR(/#parseBestEffort(String. args)) এর একটি বিকল্প মেথড, যা আর্গুমেন্টের একটি List গ্রহণ করে এবং কিছু আর্গুমেন্ট পার্স না হলেও শেষ পর্যন্ত পার্সিং চালিয়ে যেতে বাধ্য করা যায়।

প্যারামিটার
args List : যে তালিকায় অবশিষ্ট আর্গুমেন্টগুলো থাকবে।

forceContinue boolean : যদি কিছু আর্গুমেন্ট পার্স না হলেও পার্স করা চালিয়ে যাওয়া হয়, তাহলে এর মান হবে True।

ফেরত
List<String> অবশিষ্ট যুক্তিগুলির একটি List

parseBestEffort

public List<String> parseBestEffort (String... args)

ERROR(/#parse(String. args)) -এর একটি বেস্ট-এফোর্ট সংস্করণ। যদি একটি ConfigurationException থ্রো করা হয়, তবে সেই এক্সেপশনটি অভ্যন্তরীণভাবে ক্যাপচার করা হয় এবং অবশিষ্ট আর্গুমেন্টগুলো (যে আর্গুমেন্টটির কারণে এক্সেপশনটি থ্রো হয়েছে সেটি সহ) রিটার্ন করা হয়। এই মেথডটি কোনো এক্সেপশন থ্রো করে না।

প্যারামিটার
args String

ফেরত
List<String> অবশিষ্ট যুক্তিগুলির একটি List

বাধ্যতামূলক বিকল্পগুলি যাচাই করুন

public void validateMandatoryOptions ()

বাধ্যতামূলক হিসেবে চিহ্নিত সমস্ত ফিল্ড পূরণ করা হয়েছে কিনা তা যাচাই করে।

নিক্ষেপ
com.android.tradefed.config.ConfigurationException
ConfigurationException