Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে কমান্ড-লাইন আর্গুমেন্ট প্রোসেসিং সহজ করে তোলে। কমান্ড-লাইন আর্গুমেন্টগুলিকে বিভিন্ন ধরনের হিসেবে শ্রেণিবদ্ধ করা যেতে পারে, যেমন Required (অবশ্যই প্রয়োজনীয়), Optional (ঐচ্ছিক), এবং Positional (পজিশনাল)। এই আর্গুমেন্টগুলো প্রতিটি কমান্ডের মাধ্যমে অ্যাপ্লিকেশন চালানোর সময় ইউজার ইনপুট প্রদান করতে ব্যবহৃত হয়।
এখানে আমরা আলোচনা করব Required, Optional, এবং Positional আর্গুমেন্ট কিভাবে Apache Commons CLI ব্যবহার করে হ্যান্ডল করা যায়।
১. Required Arguments (অবশ্যই প্রয়োজনীয় আর্গুমেন্ট)
Required Arguments হলো সেই আর্গুমেন্টগুলো, যেগুলি কমান্ড-লাইন ইনপুটের জন্য অবশ্যই প্রদান করতে হয়। যদি এই আর্গুমেন্ট প্রদান না করা হয়, তাহলে অ্যাপ্লিকেশনটি ইউজারকে ভুল বার্তা দেখাবে এবং প্রয়োজনে সাহায্য মেসেজ প্রদর্শন করবে।
উদাহরণ:
ধরা যাক, আমরা একটি অ্যাপ্লিকেশন তৈরি করছি যা ইউজার থেকে একটি ইনপুট ফাইলের নাম গ্রহণ করে এবং সেই ফাইল প্রক্রিয়া করবে। এখানে ফাইল নাম একটি Required Argument।
import org.apache.commons.cli.*;
public class RequiredArgumentExample {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এই অপশনটি Required
options.addOption(inputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// ইনপুট ফাইল নাম গ্রহণ
String fileName = cmd.getOptionValue("f");
System.out.println("Input file: " + fileName);
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Missing required option: -f");
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("RequiredArgumentExample", options);
}
}
}
ব্যাখ্যা:
setRequired(true):inputFileঅপশনকে required করা হয়েছে, যার মানে ইউজারকে এই অপশনটি অবশ্যই প্রদান করতে হবে।HelpFormatter: যদি কমান্ড-লাইন আর্গুমেন্টে-fঅপশন প্রদান না করা হয়, তবেHelpFormatterদিয়ে সাহায্য মেসেজ প্রদর্শন করা হয়।
আউটপুট:
যদি আপনি -f অপশন ছাড়া অ্যাপ্লিকেশনটি চালান:
java RequiredArgumentExample
এখানে সাহায্য মেসেজ দেখাবে:
Missing required option: -f
২. Optional Arguments (ঐচ্ছিক আর্গুমেন্ট)
Optional Arguments হলো সেই আর্গুমেন্টগুলো, যেগুলি ইউজার চাইলে দিতে পারে, তবে তা দেওয়া বাধ্যতামূলক নয়। এগুলি না দিলেও অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করতে পারে।
উদাহরণ:
ধরা যাক, একটি অ্যাপ্লিকেশন তৈরি করা হচ্ছে, যেখানে ইউজার একটি ইনপুট ফাইল প্রদান করবে, এবং ঐচ্ছিকভাবে আউটপুট ফাইলের নামও দিতে পারে।
import org.apache.commons.cli.*;
public class OptionalArgumentExample {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
Option inputFile = new Option("f", "file", true, "Input file path");
options.addOption(inputFile);
// ঐচ্ছিক আর্গুমেন্ট: আউটপুট ফাইল নাম
Option outputFile = new Option("o", "output", true, "Output file path");
outputFile.setRequired(false); // এই অপশনটি Optional
options.addOption(outputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// ইনপুট ফাইল নাম গ্রহণ
String input = cmd.getOptionValue("f");
System.out.println("Input file: " + input);
// যদি আউটপুট ফাইল দেওয়া থাকে
if (cmd.hasOption("o")) {
String output = cmd.getOptionValue("o");
System.out.println("Output file: " + output);
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionalArgumentExample", options);
}
}
}
ব্যাখ্যা:
setRequired(false):outputFileঅপশনটি optional। অর্থাৎ, ইউজার চাইলে এটি দিতে পারে, কিন্তু বাধ্যতামূলক নয়।cmd.hasOption("o"): এখানে আমরা চেক করি যে ইউজার আউটপুট ফাইল প্রদান করেছে কিনা।
আউটপুট:
- যদি আপনি আউটপুট ফাইল উল্লেখ না করেন:
java OptionalArgumentExample -f input.txt
আউটপুট:
Input file: input.txt
No output file specified.
- যদি আপনি আউটপুট ফাইল উল্লেখ করেন:
java OptionalArgumentExample -f input.txt -o output.txt
আউটপুট:
Input file: input.txt
Output file: output.txt
৩. Positional Arguments (পজিশনাল আর্গুমেন্ট)
Positional Arguments এমন আর্গুমেন্ট যা নির্দিষ্ট পজিশনে থাকতে হয় এবং সাধারণত স্বল্প আকারে উল্লেখ করা হয়। এ ধরনের আর্গুমেন্টে সাধারণত অপশন চিহ্ন (যেমন -f বা --file) ব্যবহার করা হয় না। এগুলি সোজা এবং সরাসরি ইনপুট হিসেবে দেওয়া হয়।
উদাহরণ:
ধরা যাক, একটি কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করা হচ্ছে যেখানে প্রথম আর্গুমেন্টটি ইনপুট ফাইল এবং দ্বিতীয় আর্গুমেন্টটি আউটপুট ফাইল।
import org.apache.commons.cli.*;
public class PositionalArgumentExample {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// পজিশনাল আর্গুমেন্ট: ইনপুট ফাইল
Option inputFile = new Option("f", "file", true, "Input file path");
options.addOption(inputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// প্রথম পজিশনাল আর্গুমেন্ট: ইনপুট ফাইল
String inputFilePath = cmd.getArgs()[0]; // ইনপুট ফাইল
System.out.println("Input file: " + inputFilePath);
// দ্বিতীয় পজিশনাল আর্গুমেন্ট: আউটপুট ফাইল
String outputFilePath = cmd.getArgs()[1]; // আউটপুট ফাইল
System.out.println("Output file: " + outputFilePath);
} catch (ParseException e) {
// যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("PositionalArgumentExample", options);
}
}
}
ব্যাখ্যা:
- Positional Argument Parsing: পজিশনাল আর্গুমেন্টগুলো
cmd.getArgs()থেকে নেওয়া হয়। - এটি পজিশনাল আর্গুমেন্ট হিসেবে কাজ করে, যেখানে আর্গুমেন্টের পজিশন অনুযায়ী মান নেয়া হয়।
আউটপুট:
java PositionalArgumentExample input.txt output.txt
আউটপুট:
Input file: input.txt
Output file: output.txt
সারাংশ
Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি তিন ধরনের আর্গুমেন্ট হ্যান্ডল করতে পারেন:
- Required Arguments: এই আর্গুমেন্টগুলো অবশ্যই প্রদান করতে হয়।
- Optional Arguments: এই আর্গুমেন্টগুলো ঐচ্ছিক এবং প্রদান না করলেও অ্যাপ্লিকেশনটি কাজ করবে।
- Positional Arguments: এই আর্গুমেন্টগুলো নির্দিষ্ট পজিশনে থাকতে হয় এবং কোনো অপশন চিহ্ন ছাড়াই সরাসরি ইনপুট হিসেবে দেওয়া হয়।
এভাবে, Apache Commons CLI এর মাধ্যমে আপনি খুব সহজেই কমান্ড-লাইন আর্গুমেন্ট প্রোসেসিং করতে পারবেন এবং আপনার অ্যাপ্লিকেশনটিকে কাস্টমাইজ করতে পারবেন।
Read more