Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনের জন্য কমান্ড লাইন আর্গুমেন্ট হ্যান্ডলিং খুবই সহজ এবং কার্যকরী করে তোলে। এর মাধ্যমে আপনি একাধিক সাব-কমান্ড (sub-command) তৈরি করতে পারেন এবং প্রত্যেকটি সাব-কমান্ডের জন্য আলাদা কমান্ড লাইন বিকল্প (options) এবং আর্গুমেন্ট (arguments) প্রক্রিয়া করতে পারেন। Sub-command Parsing এবং Validation এর মাধ্যমে আপনি একটি শক্তিশালী এবং নমনীয় কমান্ড লাইন ইন্টারফেস তৈরি করতে পারবেন যা বিভিন্ন ফাংশনালিটির জন্য বিভিন্ন সাব-কমান্ড গ্রহণ করে।
Sub-command Parsing এবং Validation এর ভূমিকা
- Sub-command Parsing: সাব-কমান্ডগুলি একাধিক কার্যক্রম বা অপারেশনকে পৃথক করে দেয়, যেখানে প্রতিটি সাব-কমান্ডের জন্য আলাদা কমান্ড লাইন বিকল্প বা আর্গুমেন্ট থাকতে পারে। উদাহরণস্বরূপ,
gitকমান্ডেgit commit,git push,git pullইত্যাদি আলাদা সাব-কমান্ড হতে পারে। - Validation: সাব-কমান্ড ব্যবহারের সময় প্রয়োজনীয় বিকল্প বা আর্গুমেন্ট যাচাই (validate) করা খুব গুরুত্বপূর্ণ। সঠিক ইনপুট প্রদান না করলে ত্রুটি (error) বার্তা প্রদর্শন করা উচিত।
উদাহরণ: Sub-command Parsing এবং Validation
এই উদাহরণে আমরা একটি অ্যাপ্লিকেশন তৈরি করব, যেখানে দুটি সাব-কমান্ড থাকবে:
add– একটি ফাইল যোগ করবে।remove– একটি ফাইল মুছে ফেলবে।
এই দুটি সাব-কমান্ডের জন্য আলাদা বিকল্প এবং আর্গুমেন্ট থাকবে। যদি ব্যবহারকারী সঠিক সাব-কমান্ড বা আর্গুমেন্ট প্রদান না করে, তাহলে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
উদাহরণ কোড:
import org.apache.commons.cli.*;
public class SubCommandParsingExample {
public static void main(String[] args) {
// মূল অপশন তৈরি
Options options = new Options();
// "add" সাব-কমান্ড বিকল্প
Option addFileOption = new Option("f", "file", true, "File to add");
addFileOption.setRequired(true);
options.addOption(addFileOption);
// "remove" সাব-কমান্ড বিকল্প
Option removeFileOption = new Option("f", "file", true, "File to remove");
removeFileOption.setRequired(true);
options.addOption(removeFileOption);
// "help" বিকল্প
Option helpOption = new Option("h", "help", false, "Show help");
options.addOption(helpOption);
// সাব-কমান্ড অপশন গ্রুপ
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// প্রথমে কমান্ড পার্স করা
cmd = parser.parse(options, args);
// সাহায্য প্রদর্শন
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("SubCommandParsingExample", options);
return;
}
// সাব-কমান্ড চেক করা
if (cmd.hasOption("f")) {
String file = cmd.getOptionValue("f");
if (args[0].equals("add")) {
System.out.println("Adding file: " + file);
} else if (args[0].equals("remove")) {
System.out.println("Removing file: " + file);
} else {
System.out.println("Invalid sub-command. Use 'add' or 'remove'.");
return;
}
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("SubCommandParsingExample", options);
}
}
}
ব্যাখ্যা:
- Options তৈরি:
addএবংremoveসাব-কমান্ডের জন্য বিকল্প-fবা--fileতৈরি করা হয়েছে, যা বাধ্যতামূলক।helpবিকল্প-hবা--helpতৈরি করা হয়েছে যাতে সহায়ক বার্তা প্রদর্শন করা যায়।
- Sub-command চেকিং:
args[0].equals("add")বাargs[0].equals("remove")চেক করার মাধ্যমে প্রথম আর্গুমেন্ট (সাব-কমান্ড) যাচাই করা হয়। যদি এটিaddবাremoveনা হয়, তাহলে ত্রুটি বার্তা প্রদর্শন করা হবে।
- HelpFormatter:
- ব্যবহারকারী যদি
-hবা--helpবিকল্প দেন, তাহলেHelpFormatterব্যবহার করে সহায়ক বার্তা প্রদর্শন করা হবে।
- ব্যবহারকারী যদি
- বাধ্যতামূলক আর্গুমেন্ট:
-fবিকল্পের জন্যsetRequired(true)ব্যবহার করা হয়েছে, যা এই বিকল্পটিকে বাধ্যতামূলক (mandatory) করে তোলে।
কমান্ড লাইনের উদাহরণ:
ফাইল যোগ করা:
java SubCommandParsingExample add -f myfile.txtআউটপুট:
Adding file: myfile.txtফাইল মুছে ফেলা:
java SubCommandParsingExample remove -f myfile.txtআউটপুট:
Removing file: myfile.txtঅযাচিত সাব-কমান্ড ব্যবহার:
java SubCommandParsingExample delete -f myfile.txtআউটপুট:
Invalid sub-command. Use 'add' or 'remove'.সহায়ক বার্তা প্রদর্শন:
java SubCommandParsingExample -hআউটপুট:
Usage: SubCommandParsingExample [options] Options: -h, --help Show help -f, --file <file> File to add/remove
Apache Commons CLI-এর Sub-command Parsing এবং Validation ফিচারের মাধ্যমে আপনি শক্তিশালী এবং নমনীয় CLI অ্যাপ্লিকেশন তৈরি করতে পারেন। এটি আপনাকে একাধিক সাব-কমান্ড এবং তাদের সাথে সম্পর্কিত বিকল্প প্রক্রিয়া করতে সক্ষম করে এবং ব্যবহারকারীকে সঠিক ইনপুট প্রদান করতে সহায়ক বার্তা প্রদর্শন করতে পারে। এটি Java কমান্ড লাইন অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকরী এবং প্রয়োজনীয় টুল।
Read more