Apache Commons CLI লাইব্রেরি Java-তে কমান্ড লাইন আর্গুমেন্ট প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এটি Positional Arguments এবং Optional Arguments একসাথে ব্যবহার করার জন্য একটি শক্তিশালী ব্যবস্থা প্রদান করে। Positional Arguments বা পজিশনাল আর্গুমেন্ট হল আর্গুমেন্টগুলি যা নির্দিষ্ট অবস্থানে দেওয়া হয় এবং সেগুলির কোনো বিকল্প নাম থাকে না। অন্যদিকে, Optional Arguments বা ঐচ্ছিক আর্গুমেন্টগুলি ঐচ্ছিক এবং এগুলির নাম থাকে (যেমন -h, --help)।
যখন আপনি Positional এবং Optional Arguments একসাথে ব্যবহার করেন, তখন এটি আপনাকে বিভিন্ন ধরনের আর্গুমেন্ট প্রক্রিয়াকরণে অনেক নমনীয়তা এবং স্বচ্ছতা প্রদান করে।
Positional এবং Optional Arguments এর মধ্যে পার্থক্য
- Positional Arguments:
- এগুলি নির্দিষ্ট স্থানে প্রবেশ করে এবং তাদের কোন নাম থাকে না।
- উদাহরণ: ফাইল নাম, ইনপুট পাথ ইত্যাদি।
- উদাহরণ:
java MyApp input.txt
- Optional Arguments:
- এগুলি ঐচ্ছিক এবং তাদের একটি নাম থাকে (যেমন
-h,--inputইত্যাদি)। - উদাহরণ:
java MyApp -v --output result.txt
- এগুলি ঐচ্ছিক এবং তাদের একটি নাম থাকে (যেমন
Positional এবং Optional Arguments একসাথে ব্যবহারের কৌশল
Apache Commons CLI ব্যবহার করে আপনি খুব সহজে Positional এবং Optional আর্গুমেন্ট একসাথে ম্যানেজ করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে পজিশনাল এবং ঐচ্ছিক আর্গুমেন্ট একসাথে ব্যবহৃত হচ্ছে।
উদাহরণ: Positional এবং Optional Arguments একসাথে ব্যবহার
import org.apache.commons.cli.*;
public class PositionalAndOptionalExample {
public static void main(String[] args) {
// বিকল্প তৈরি করা
Options options = new Options();
// --verbose বিকল্প (ঐচ্ছিক)
Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
options.addOption(verboseOption);
// --output বিকল্প (ঐচ্ছিক)
Option outputOption = new Option("o", "output", true, "Output file");
options.addOption(outputOption);
// কমান্ড লাইন পার্সার তৈরি
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// পজিশনাল আর্গুমেন্ট গ্রহণ
String positionalArg = args.length > 0 ? args[args.length - 1] : null;
// --verbose আর্গুমেন্ট চেক করা
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
}
// --output আর্গুমেন্ট চেক করা
if (cmd.hasOption("o")) {
String outputFile = cmd.getOptionValue("o");
System.out.println("Output file: " + outputFile);
}
// পজিশনাল আর্গুমেন্ট চেক করা
if (positionalArg != null) {
System.out.println("Positional argument: " + positionalArg);
} else {
System.out.println("No positional argument provided.");
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("PositionalAndOptionalExample", options);
}
}
}
ব্যাখ্যা:
- Options:
- এখানে দুটি বিকল্প তৈরি করা হয়েছে:
-vবা--verbose(ঐচ্ছিক) এবং-oবা--output(ঐচ্ছিক), যা ব্যবহারকারী প্রদান করতে পারেন। -oবিকল্পটি একটি আর্গুমেন্ট গ্রহণ করে (যেমন আউটপুট ফাইলের নাম), আর-vবিকল্পটি শুধুমাত্র একটি ফ্ল্যাগ হিসেবে কাজ করে।
- এখানে দুটি বিকল্প তৈরি করা হয়েছে:
- Positional Argument:
- পজিশনাল আর্গুমেন্টটি শেষ আর্গুমেন্ট হিসেবে গৃহীত হয়েছে (
args[args.length - 1]), যেহেতু এটি কোনো নাম থাকে না এবং শুধুমাত্র শেষ পজিশনে থাকে।
- পজিশনাল আর্গুমেন্টটি শেষ আর্গুমেন্ট হিসেবে গৃহীত হয়েছে (
- CommandLine Parsing:
CommandLineParserক্লাস ব্যবহার করে আর্গুমেন্টগুলো পার্স করা হয়। তারপর, ঐচ্ছিক বিকল্প এবং পজিশনাল আর্গুমেন্টের মান চেক করা হয়।
- HelpFormatter:
- যদি কোনো ত্রুটি ঘটে, তবে
HelpFormatterব্যবহার করে সহায়ক বার্তা প্রদর্শন করা হবে, যা ব্যবহারকারীকে সঠিকভাবে কমান্ড এবং বিকল্প ব্যবহার করতে সহায়ক হবে।
- যদি কোনো ত্রুটি ঘটে, তবে
উদাহরণ: কমান্ড লাইনে ইনপুট এবং আউটপুট প্রদান
java PositionalAndOptionalExample input.txt -v --output result.txt
এক্ষেত্রে:
input.txtপজিশনাল আর্গুমেন্ট (পোস্টিশনাল আর্গুমেন্ট)-vঐচ্ছিক ফ্ল্যাগ, verbose মুড সক্রিয় করবে--output result.txtআউটপুট ফাইলের নাম
আউটপুট:
Verbose mode enabled
Output file: result.txt
Positional argument: input.txt
Apache Commons CLI-তে Positional এবং Optional আর্গুমেন্ট একসাথে ব্যবহারের মাধ্যমে আপনি একটি নমনীয় এবং শক্তিশালী কমান্ড লাইন ইনপুট প্রক্রিয়া তৈরি করতে পারেন। এটি আপনাকে আর্গুমেন্টগুলো সঠিকভাবে ব্যবস্থাপনা করতে সাহায্য করে, এবং আপনাকে একই সাথে ঐচ্ছিক বিকল্প এবং পজিশনাল আর্গুমেন্ট প্রক্রিয়াকরণের সুযোগ দেয়। HelpFormatter ব্যবহার করে আপনি সহায়ক বার্তা তৈরি করতে পারেন যা ব্যবহারকারীদের সঠিকভাবে কমান্ড ব্যবহার করতে সাহায্য করে।
Read more