Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট এবং বিকল্প (Option) প্রক্রিয়াকরণ করতে ব্যবহৃত হয়। এটি Option এবং OptionGroup ক্লাস ব্যবহার করে অ্যাপ্লিকেশনে বিকল্প (Options) সংজ্ঞায়িত এবং সংগঠিত করতে সাহায্য করে। Option এবং OptionGroup এর মাধ্যমে আপনি কমান্ড লাইন থেকে ইনপুট আর্গুমেন্টগুলিকে আরও সুসংগঠিত এবং কার্যকরভাবে প্রক্রিয়া করতে পারেন।
Option এর ভূমিকা
Option ক্লাস অ্যাপাচি কমন্স সিআলআই-এর একটি মৌলিক উপাদান যা একক বা বহু আর্গুমেন্টে পরিণত হওয়া বিকল্প তৈরি করতে ব্যবহৃত হয়। প্রতিটি Option একটি নির্দিষ্ট কমান্ড লাইন বিকল্প (যেমন -f বা --file) এবং তার সাথে যুক্ত মান (যেমন filename.txt) বা একটি ফ্ল্যাগ (যেমন -v বা --verbose) বোঝায়।
প্রধান বৈশিষ্ট্য:
- নাম এবং শর্ট নাম: প্রতিটি বিকল্পের একটি পূর্ণ নাম (যেমন
--file) এবং একটি শর্ট নাম (যেমন-f) থাকতে পারে। - মান সহ বা ফ্ল্যাগ: কিছু বিকল্পের মান থাকতে পারে (যেমন
-f <file>), এবং কিছু বিকল্প শুধুমাত্র ফ্ল্যাগ হিসেবে থাকতে পারে (যেমন-vবা--verbose)। - বাধ্যতামূলক বা ঐচ্ছিক: আপনি বিকল্পটিকে বাধ্যতামূলক বা ঐচ্ছিক (optional) হিসাবে চিহ্নিত করতে পারেন।
উদাহরণ:
import org.apache.commons.cli.*;
public class OptionExample {
public static void main(String[] args) {
Options options = new Options();
// -f বা --file বিকল্প যোগ করা
Option fileOption = new Option("f", "file", true, "Input file");
options.addOption(fileOption);
// -v বা --verbose ফ্ল্যাগ যোগ করা
Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
options.addOption(verboseOption);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// --file বা -f আর্গুমেন্ট চেক করা
if (cmd.hasOption("f")) {
String file = cmd.getOptionValue("f");
System.out.println("Input file: " + file);
}
// --verbose বা -v ফ্ল্যাগ চেক করা
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
}
}
}
ব্যাখ্যা:
Option("f", "file", true, "Input file"): এখানে-fএবং--fileবিকল্প তৈরি করা হয়েছে, যার মানtrueমানে এটি একটি মান (যেমনfilename.txt) গ্রহণ করবে।Option("v", "verbose", false, "Enable verbose output"): এটি একটি ফ্ল্যাগ বিকল্প তৈরি করে, যা কোনো মান গ্রহণ করবে না এবং কেবল উপস্থিত থাকলেই সক্রিয় হবে।
OptionGroup এর ভূমিকা
OptionGroup একসাথে সম্পর্কিত বিকল্পগুলির একটি গ্রুপ তৈরি করার জন্য ব্যবহৃত হয়। এটি প্রধানত দুটি বা তার বেশি বিকল্পের মধ্যে পারস্পরিক সম্পর্ক বজায় রাখে, যেমন শুধুমাত্র এক বিকল্প নির্বাচন করা যেতে পারে। OptionGroup কমান্ড লাইনে একাধিক বিকল্পের মধ্যে একটিকে চয়ন করতে সাহায্য করে, এবং একাধিক বিকল্প একসাথে উপস্থিত হলে ত্রুটি বার্তা প্রদান করতে পারে।
প্রধান বৈশিষ্ট্য:
- একক বিকল্প নির্বাচন: একবারে একটির বেশি বিকল্প নির্বাচন করা সম্ভব নয়। উদাহরণস্বরূপ, যদি আপনি
-v(verbose) এবং-d(debug) একসাথে নির্বাচন করেন, তবে এটি সঠিক নয় এবং ত্রুটি প্রদান করবে। - বিকল্পের গোষ্ঠী:
OptionGroupএকটি সেট বিকল্প ধারণ করতে পারে, যেগুলির মধ্যে একটিকে শুধুমাত্র নির্বাচন করা যায়।
উদাহরণ:
import org.apache.commons.cli.*;
public class OptionGroupExample {
public static void main(String[] args) {
Options options = new Options();
// --help বা -h বিকল্প যোগ করা
Option helpOption = new Option("h", "help", false, "Show help");
options.addOption(helpOption);
// --verbose বা -v বিকল্প যোগ করা
Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
options.addOption(verboseOption);
// --debug বা -d বিকল্প যোগ করা
Option debugOption = new Option("d", "debug", false, "Enable debug mode");
options.addOption(debugOption);
// একাধিক বিকল্পের জন্য OptionGroup তৈরি করা
OptionGroup group = new OptionGroup();
group.addOption(verboseOption);
group.addOption(debugOption);
// বিকল্পগুলি Group হিসেবে যুক্ত করা
options.addOptionGroup(group);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// --help চেক করা
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionGroupExample", options);
return;
}
// --verbose অথবা --debug চেক করা
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
} else if (cmd.hasOption("d")) {
System.out.println("Debug mode enabled");
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
}
}
}
ব্যাখ্যা:
OptionGroupব্যবহার করা হয়েছে যাতে-vএবং-dবিকল্পগুলি একসাথে থাকে এবং ব্যবহারকারী শুধুমাত্র একটি বিকল্প চয়ন করতে পারে।OptionGroup-এ একাধিক বিকল্প যোগ করা হয়েছে, এবং এই গ্রুপের বিকল্পগুলির মধ্যে শুধু একটি বিকল্প নির্বাচিত হতে পারে। যদি ব্যবহারকারী দুটি বিকল্প একসাথে প্রদান করে, তবে তা ত্রুটি প্রদর্শন করবে।
Option এবং OptionGroup এর সুবিধা
- নমনীয়তা:
OptionএবংOptionGroupআপনাকে সহজে বিভিন্ন ধরনের বিকল্প এবং আর্গুমেন্ট হ্যান্ডল করতে সহায়ক। - স্বচ্ছতা: বিকল্পগুলির প্রকার, তাদের মান এবং ফ্ল্যাগস সহজেই চিহ্নিত করা যায়, যা কোডের স্বচ্ছতা বাড়ায়।
- এনফোর্সড রুলস:
OptionGroupব্যবহার করে আপনি কিছু বিকল্প একসাথে ব্যবহারের ক্ষেত্রে নিষেধাজ্ঞা আরোপ করতে পারেন, যা সিস্টেমের মধ্যে অসঙ্গতি এড়ায়। - সহজ সহায়ক বার্তা:
OptionএবংOptionGroupএর সাহায্যে, ব্যবহারকারীকে কীভাবে CLI ব্যবহার করতে হবে, তা সহজে ব্যাখ্যা করা যায়।
Apache Commons CLI এর Option এবং OptionGroup এর সাহায্যে Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট হ্যান্ডলিং অনেক সহজ এবং কার্যকরী হয়ে ওঠে। Option ব্যবহার করে একক বিকল্প তৈরি করা যায়, এবং OptionGroup ব্যবহার করে সম্পর্কিত বিকল্পগুলিকে একসাথে গ্রুপ করা যায়, যা কমান্ড লাইনে কিছু বিকল্প একসাথে নির্বাচন করার সীমাবদ্ধতা আরোপ করে। এই বৈশিষ্ট্যগুলি CLI অ্যাপ্লিকেশনগুলির জন্য খুবই গুরুত্বপূর্ণ, এবং এগুলি অ্যাপ্লিকেশনের ইন্টারফেসকে আরও ব্যবহারবান্ধব এবং কার্যকরী করে তোলে।
Read more