Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য একটি শক্তিশালী এবং নমনীয় টুল। এটি ব্যবহারকারীদের কমপ্লেক্স কমান্ড লাইন সিনট্যাক্স (যেমন অপশনাল আর্গুমেন্ট, ফ্ল্যাগস, এবং একাধিক আর্গুমেন্ট) সহজে হ্যান্ডল করার সুযোগ দেয়। আপনি যখন অনেক অপশন এবং আর্গুমেন্ট পরিচালনা করেন, তখন কমপ্লেক্স সিনট্যাক্স ব্যবহার করতে পারেন, যেখানে আর্গুমেন্টগুলির মধ্যে সম্পর্ক এবং নির্দিষ্ট ফরম্যাট থাকতে পারে।
এখানে Apache Commons CLI লাইব্রেরির মাধ্যমে কীভাবে কমপ্লেক্স কমান্ড লাইন সিনট্যাক্স হ্যান্ডল করা যায়, তার উদাহরণ দেখানো হবে।
1. কমপ্লেক্স কমান্ড লাইন সিনট্যাক্স উদাহরণ
ধরা যাক, আমরা একটি কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করছি যা ব্যবহারকারীদের নাম, বয়স, ফ্ল্যাগ এবং একাধিক আর্গুমেন্ট গ্রহণ করবে।
উদাহরণ:
-n John: নাম গ্রহণ করতে-a 30: বয়স গ্রহণ করতে-f: একটি ফ্ল্যাগ (যেমন প্রমোট করা)--options=opt1,opt2: একাধিক আর্গুমেন্টের জন্য
2. Complex Command Line Syntax হ্যান্ডলিং এর জন্য কোড উদাহরণ
import org.apache.commons.cli.*;
import java.util.Arrays;
public class CommandLineExample {
public static void main(String[] args) {
// Option অবজেক্ট তৈরি করা
Options options = new Options();
// --name অপশন (আর্গুমেন্টের সাথে)
options.addOption("n", "name", true, "Your name");
// --age অপশন (আর্গুমেন্টের সাথে)
options.addOption("a", "age", true, "Your age");
// --flag অপশন (ফ্ল্যাগ, আর্গুমেন্ট ছাড়াই)
options.addOption("f", "flag", false, "Activate flag");
// --options অপশন (কমা দ্বারা পৃথক একাধিক আর্গুমেন্ট)
options.addOption("o", "options", true, "Comma separated list of options");
// CommandLineParser ব্যবহার করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// --name অপশন চেক করা
if (cmd.hasOption("n")) {
String name = cmd.getOptionValue("n");
System.out.println("Name: " + name);
}
// --age অপশন চেক করা
if (cmd.hasOption("a")) {
String age = cmd.getOptionValue("a");
System.out.println("Age: " + age);
}
// --flag অপশন চেক করা
if (cmd.hasOption("f")) {
System.out.println("Flag is activated!");
}
// --options অপশন চেক করা
if (cmd.hasOption("o")) {
String optionsValue = cmd.getOptionValue("o");
String[] optionsArray = optionsValue.split(",");
System.out.println("Options: " + Arrays.toString(optionsArray));
}
} catch (ParseException e) {
System.out.println("Parsing failed. Reason: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
}
}
}
ব্যাখ্যা:
- Options Object:
- এখানে আমরা চারটি অপশন তৈরি করেছি:
name(নাম),age(বয়স),flag(ফ্ল্যাগ), এবংoptions(কমা দ্বারা পৃথক একাধিক অপশন)।
- এখানে আমরা চারটি অপশন তৈরি করেছি:
- Option Argument Type:
hasArg(true): এই অপশনটি আর্গুমেন্ট গ্রহণ করবে, যেমন-n(নাম) বা-a(বয়স)।hasArg(false): ফ্ল্যাগ অপশন, আর্গুমেন্ট ছাড়াই ব্যবহৃত হবে (যেমন-f)।
- Multiple Arguments Handling:
-oঅপশনটি একাধিক আর্গুমেন্ট গ্রহণ করবে, যা কমা দ্বারা পৃথক করা হবে (যেমন--options=opt1,opt2), এবং সেই আর্গুমেন্টগুলিকেsplit(",")দিয়ে পৃথক করা হবে।
- CommandLineParser:
DefaultParserব্যবহার করা হয়েছে, যা সাধারন কমান্ড লাইন আর্গুমেন্ট পার্সিংয়ের জন্য উপযুক্ত।
3. কমান্ড লাইন আর্গুমেন্ট ব্যবহার
এই প্রোগ্রামটি চালানোর সময় আপনি বিভিন্ন কমান্ড লাইন আর্গুমেন্ট ব্যবহার করতে পারেন। নিচে কিছু উদাহরণ দেওয়া হয়েছে:
উদাহরণ 1: সকল আর্গুমেন্ট সহ
java CommandLineExample -n John -a 30 -f --options=opt1,opt2,opt3
আউটপুট:
Name: John
Age: 30
Flag is activated!
Options: [opt1, opt2, opt3]
উদাহরণ 2: শুধুমাত্র --name এবং --age সহ
java CommandLineExample -n Alice -a 25
আউটপুট:
Name: Alice
Age: 25
উদাহরণ 3: শুধুমাত্র --flag সহ
java CommandLineExample -f
আউটপুট:
Flag is activated!
উদাহরণ 4: --options অপশন ব্যবহার করা
java CommandLineExample --options=opt1,opt2
আউটপুট:
Options: [opt1, opt2]
4. Error Handling
যদি কোনো ভুল আর্গুমেন্ট বা অপশন দেওয়া হয়, তাহলে আপনি HelpFormatter ব্যবহার করে ইউজারকে সাহায্য প্রদর্শন করতে পারেন:
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
এটি কমান্ড লাইন ব্যবহারকারীর জন্য সাহায্য বার্তা প্রদর্শন করবে, যেমন অপশনগুলো কীভাবে ব্যবহার করতে হবে তা।
সারাংশ
Apache Commons CLI লাইব্রেরি ব্যবহার করে কমপ্লেক্স কমান্ড লাইন সিনট্যাক্স হ্যান্ডল করা খুবই সহজ। আপনি একাধিক আর্গুমেন্ট, অপশনাল আর্গুমেন্ট, এবং ফ্ল্যাগস ব্যবহার করে জটিল কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করতে পারেন। Options অবজেক্টে অপশন এবং আর্গুমেন্টের স্টাইল কনফিগার করা হয় এবং CommandLineParser ব্যবহার করে সেগুলো পার্স করা হয়। HelpFormatter ব্যবহার করে ব্যবহারকারীদের সাহায্য প্রদর্শন করা হয়।
Read more