Apache Commons CLI একটি শক্তিশালী Java লাইব্রেরি যা কমান্ড-লাইন আর্গুমেন্ট (CLI) প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এটি CLI কমান্ডের আর্গুমেন্টগুলিকে পার্স (parse) এবং প্রক্রিয়া করতে সহায়তা করে। Command Line Options তৈরির মাধ্যমে আপনি কমান্ড-লাইন ইনপুট গ্রহণ করতে পারেন এবং সেগুলো প্রোগ্রামে প্রক্রিয়া করতে পারেন। এই প্রক্রিয়ায় সাধারণত অপশন বা আর্গুমেন্ট যোগ করার জন্য একটি Options অবজেক্ট তৈরি করতে হয় এবং সেগুলো নির্দিষ্ট ফ্ল্যাগ বা কীগুলোর মাধ্যমে কমান্ডে যোগ করা হয়।
এখানে Apache Commons CLI ব্যবহার করে Command Line Option তৈরির একটি উদাহরণ দেওয়া হয়েছে।
1. এপাচি কমন্স সিআলআই (Apache Commons CLI) সেটআপ
প্রথমেই, আপনার প্রকল্পে Apache Commons CLI লাইব্রেরি যোগ করা প্রয়োজন। Maven ব্যবহার করলে, আপনার pom.xml ফাইলে এই ডিপেনডেন্সি যোগ করতে হবে:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
এটি Apache Commons CLI লাইব্রেরির ১.৪ ভার্সন। এটি আপনার প্রোজেক্টের Maven বিল্ডে CLI আর্গুমেন্ট হ্যান্ডলিংয়ের জন্য ব্যবহার হবে।
2. Command Line Option তৈরি এবং ব্যবহারের উদাহরণ
এখন আমরা একটি সাধারণ Java প্রোগ্রাম তৈরি করব যা Command Line Options হ্যান্ডেল করবে এবং কিভাবে ব্যবহার করা যায় তা দেখাবে। এটি একটি প্রোগ্রাম হবে যা কিছু অপশন গ্রহণ করবে, যেমন --username এবং --password।
উদাহরণ: Command Line Option তৈরি করা
import org.apache.commons.cli.*;
public class CommandLineExample {
public static void main(String[] args) {
// Command Line Options তৈরি করা
Options options = new Options();
// "username" অপশন যোগ করা
Option usernameOption = new Option("u", "username", true, "Username for login");
usernameOption.setRequired(true); // এই অপশনটি অবশ্যই প্রদান করতে হবে
options.addOption(usernameOption);
// "password" অপশন যোগ করা
Option passwordOption = new Option("p", "password", true, "Password for login");
passwordOption.setRequired(true); // এই অপশনটি অবশ্যই প্রদান করতে হবে
options.addOption(passwordOption);
// "verbose" অপশন (একটি ফ্ল্যাগ অপশন)
Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
options.addOption(verboseOption);
// CommandLineParser তৈরি করা
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
try {
// আর্গুমেন্ট পার্স করা
CommandLine cmd = parser.parse(options, args);
// "username" এবং "password" আর্গুমেন্ট রিড করা
String username = cmd.getOptionValue("username");
String password = cmd.getOptionValue("password");
// "verbose" আর্গুমেন্ট চেক করা
boolean verbose = cmd.hasOption("verbose");
// আউটপুট
System.out.println("Username: " + username);
System.out.println("Password: " + password);
System.out.println("Verbose mode: " + (verbose ? "Enabled" : "Disabled"));
} catch (ParseException e) {
// যদি কোনো সমস্যা ঘটে, সাহায্য দেখান
System.out.println("Parsing failed. Reason: " + e.getMessage());
formatter.printHelp("CommandLineExample", options);
}
}
}
ব্যাখ্যা:
- Options অবজেক্ট তৈরি: এখানে
Optionsঅবজেক্ট তৈরি করা হয়েছে যাতে CLI অপশনগুলো সংরক্ষণ করা যায়। - Option তৈরি:
Optionক্লাস ব্যবহার করেusername,password, এবংverboseঅপশন তৈরি করা হয়েছে।-uবা--username: ব্যবহারকারীর নামের জন্য।-pবা--password: পাসওয়ার্ডের জন্য।-vবা--verbose: একটি ফ্ল্যাগ অপশন (যেমনtrueবাfalse) যা ভার্বোস আউটপুট সক্ষম/অক্ষম করবে।
- CommandLineParser:
DefaultParserব্যবহার করে আর্গুমেন্টগুলি পার্স করা হচ্ছে। - আর্গুমেন্ট হ্যান্ডলিং:
cmd.getOptionValue()এবংcmd.hasOption()ব্যবহার করে নির্দিষ্ট অপশনগুলির মান এবং তাদের উপস্থিতি যাচাই করা হচ্ছে। - এবং সাহায্য বার্তা: যদি কমান্ড লাইন আর্গুমেন্টগুলি ভুলভাবে দেওয়া হয়, তাহলে
HelpFormatterসাহায্য বার্তা প্রদর্শন করবে।
3. Command Line Option এর আউটপুট
এখন যদি আপনি এই প্রোগ্রামটি চালান, তাহলে এটি কমান্ড-লাইন আর্গুমেন্ট অনুসারে আউটপুট প্রদান করবে। উদাহরণস্বরূপ:
java CommandLineExample -u john_doe -p secretpassword -v
এখানে, আউটপুট হবে:
Username: john_doe
Password: secretpassword
Verbose mode: Enabled
অথবা, যদি আপনি -v অপশন বাদ দেন:
java CommandLineExample -u john_doe -p secretpassword
তাহলে আউটপুট হবে:
Username: john_doe
Password: secretpassword
Verbose mode: Disabled
এছাড়া, যদি আপনি ভুলভাবে অপশন প্রদান করেন, যেমন:
java CommandLineExample -u
তাহলে HelpFormatter আপনাকে সাহায্য বার্তা দেখাবে:
Parsing failed. Reason: Missing argument for option: u
usage: CommandLineExample
-u,--username <arg> Username for login
-p,--password <arg> Password for login
-v,--verbose Enable verbose output
4. এপাচি কমন্স সিআলআই এর আরও কিছু বৈশিষ্ট্য
- অপশনগুলির জন্য শর্ত নির্ধারণ: আপনি অপশনগুলির জন্য শর্ত সেট করতে পারেন, যেমন
setRequired(true)যা নিশ্চিত করবে যে একটি নির্দিষ্ট অপশন দেওয়া হবে। - সহজভাবে হেল্প মেসেজ জেনারেশন:
HelpFormatterক্লাসের মাধ্যমে সহায়ক বার্তা তৈরি করা যায়, যা ব্যবহারকারীদের CLI অপশন এবং আর্গুমেন্ট সম্পর্কে সহায়তা প্রদান করে। - নেস্টেড অপশন: কমপ্লেক্স CLI অ্যাপ্লিকেশনগুলির জন্য, আপনি নেস্টেড অপশন বা সাবকমান্ডও তৈরি করতে পারেন।
Apache Commons CLI লাইব্রেরি ব্যবহার করে কমান্ড-লাইন অপশন তৈরি করা একটি সহজ এবং কার্যকরী প্রক্রিয়া। আপনি বিভিন্ন অপশন এবং ফ্ল্যাগ তৈরি করতে পারেন এবং সেগুলি CLI আর্গুমেন্ট হিসেবে প্রোগ্রামে ব্যবহার করতে পারেন। এটি Java অ্যাপ্লিকেশনের CLI প্রোগ্রাম তৈরিতে ব্যাপকভাবে সাহায্য করতে পারে, বিশেষ করে যখন আপনাকে ব্যবহারকারীর ইনপুট গ্রহণ করতে হয় এবং বিভিন্ন বিকল্প প্রদান করতে হয়।
Command Line Option কি?
Command Line Option (CLI Option) হল এমন একটি উপাদান যা ব্যবহারকারীদের কমান্ড লাইনে ইনপুট প্রদানের জন্য ব্যবহৃত হয়। এটি একটি প্যারামিটার বা পতাকা (flag) যা কমান্ড লাইন আর্গুমেন্ট হিসেবে প্রোগ্রামে পাঠানো হয়। সাধারণত, এটি প্রোগ্রামের কার্যকারিতা বা আচরণ নির্ধারণ করতে ব্যবহৃত হয়।
Apache Commons CLI লাইব্রেরি ব্যবহার করে, আপনি সহজে কমান্ড লাইন অপশন তৈরি করতে পারেন এবং সেই অপশনগুলির মান পেতে পারেন। সাধারণত, একটি অপশন হতে পারে একটি একক অক্ষর বা পূর্ণ শব্দ, এবং এটি ইউজারের ইনপুট থেকে পার্স করা হয়।
উদাহরণস্বরূপ:
-fবা--file: ফাইল পাথ নেওয়ার জন্য।-vবা--verbose: লগিং বা ডিবাগging সক্রিয় করার জন্য।
Command Line Option কিভাবে তৈরি করবেন
Apache Commons CLI লাইব্রেরি ব্যবহার করে Command Line Options তৈরি এবং ব্যবহারের পদ্ধতি নিচে বিস্তারিতভাবে আলোচনা করা হয়েছে।
1. Apache Commons CLI সেটআপ
প্রথমে, Apache Commons CLI লাইব্রেরিটি আপনার প্রকল্পে যোগ করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে pom.xml ফাইলে নিচের ডিপেনডেন্সি যুক্ত করুন:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-cli</artifactId>
<version>1.5.0</version> <!-- সর্বশেষ ভার্সন চেক করুন -->
</dependency>
অথবা Gradle ব্যবহার করলে, build.gradle ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:
dependencies {
implementation 'org.apache.commons:commons-cli:1.5.0' // সর্বশেষ ভার্সন চেক করুন
}
এছাড়া আপনি JAR ফাইল দিয়েও Apache Commons CLI ইন্সটল করতে পারেন, যা আগের উত্তরে ব্যাখ্যা করা হয়েছে।
2. Command Line Option তৈরি করা
Options ক্লাস ব্যবহার করে আপনি কমান্ড লাইন অপশন তৈরি করতে পারেন। প্রতিটি অপশন একটি পতাকা (flag) এবং এর সাথে একটি সংযুক্ত মান থাকতে পারে। সাধারণত, অপশন দুটি ফর্মে থাকে:
- সংক্ষিপ্ত ফর্ম (যেমন
-f): একক অক্ষর। - পূর্ণ ফর্ম (যেমন
--file): সম্পূর্ণ শব্দ।
উদাহরণ: Command Line Option তৈরি করা
import org.apache.commons.cli.*;
public class CommandLineOptionExample {
public static void main(String[] args) {
// অপশন তৈরি
Options options = new Options();
// সংক্ষিপ্ত অপশন (যেমন -f) এবং তার জন্য একটি মান
options.addOption("f", "file", true, "File path to process");
// পূর্ণ অপশন (যেমন --verbose)
options.addOption("v", "verbose", false, "Enable verbose output");
// কমান্ড লাইন প্যারামিটার পার্স করার জন্য CommandLineParser ব্যবহার করা
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
try {
// কমান্ড লাইন অপশন পার্স করা
CommandLine cmd = parser.parse(options, args);
// --file বা -f অপশন থেকে ফাইল পাথ নেওয়া
if (cmd.hasOption("f")) {
String filePath = cmd.getOptionValue("f");
System.out.println("File to process: " + filePath);
}
// --verbose বা -v অপশন থেকে ভের্বোস মোড সক্রিয় করা
if (cmd.hasOption("v")) {
System.out.println("Verbose output enabled");
}
} catch (ParseException e) {
// ভুল অপশন দেওয়ার ক্ষেত্রে
System.out.println("Parsing failed. Reason: " + e.getMessage());
formatter.printHelp("CommandLineOptionExample", options);
}
}
}
3. Option এর মান নেওয়া
আপনি যখন একটি অপশন তৈরি করবেন, তখন আপনি সেই অপশনের সাথে একটি মানও যুক্ত করতে পারবেন। যেমন:
-fবা--fileঅপশনটি ব্যবহারকারী থেকে একটি ফাইল পাথ নিতে পারে।-vবা--verboseঅপশনটি একটি বুলিয়ান (boolean) ভ্যালু হতে পারে যা কমান্ডের আউটপুট ডিবাগিং বা বিস্তারিত লোগ দেখানোর জন্য ব্যবহৃত হয়।
যখন আপনি cmd.getOptionValue("f") ব্যবহার করবেন, এটি আপনাকে -f বা --file অপশনের পরবর্তী আর্গুমেন্ট (যেমন একটি ফাইল পাথ) রিটার্ন করবে। যেহেতু verbose অপশনে কোনো মান নেই, তা শুধুমাত্র সঠিকভাবে উপস্থিত থাকলে সক্রিয় হবে।
4. Help Message প্রদর্শন করা
আপনার অ্যাপ্লিকেশন যদি কোনো ভুল অপশন পায় বা যদি ব্যবহারকারী হেল্প চায়, তবে আপনি HelpFormatter ব্যবহার করে সাহায্য বার্তা প্রদর্শন করতে পারেন। এটি একটি খুব সাধারণ ফিচার যা ব্যবহারকারীদের আপনার কমান্ডের অপশনগুলো সম্পর্কে জানাতে সাহায্য করবে।
উদাহরণ:
formatter.printHelp("CommandLineOptionExample", options);
এটি কমান্ড লাইনে CommandLineOptionExample এর সমস্ত অপশন এবং তাদের বিবরণ দেখাবে।
5. বিভিন্ন ধরণের অপশন তৈরি করা
অপশন যেটি শুধুমাত্র উপস্থিত থাকতে পারে (flag)
আপনি এমন একটি অপশন তৈরি করতে পারেন যেটি শুধুমাত্র উপস্থিত থাকলে কিছু করে, অন্যথায় কিছু না করে (যেমন -v বা --verbose)।
options.addOption(Option.builder("v")
.desc("Enable verbose output")
.build());
এই অপশনটি শুধুমাত্র উপস্থিত থাকলে verbose মোড চালু করবে, আর কিছু না হলে এটি নিষ্ক্রিয় থাকবে।
6. অপশন পার্সিংয়ের ভুল শোধন
আপনি যদি ব্যবহারকারীর পক্ষ থেকে ভুল ইনপুট পান, তবে ParseException এর মাধ্যমে আপনি ত্রুটি ধরতে পারেন এবং সঠিকভাবে হেল্প বার্তা প্রদর্শন করতে পারেন। উদাহরণস্বরূপ, যদি একটি আবশ্যক অপশন (যেমন --file) না দেওয়া হয়, তবে আপনি ব্যবহারকারীকে জানিয়ে দেবেন এবং কিভাবে সঠিকভাবে কমান্ড ব্যবহার করতে হবে তা দেখাবেন।
সারাংশ
Apache Commons CLI ব্যবহার করে আপনি খুব সহজে এবং দ্রুত কমান্ড লাইন অপশন তৈরি করতে পারেন। এটি আপনাকে বিভিন্ন ধরণের অপশন (সংক্ষিপ্ত বা পূর্ণ ফর্ম) তৈরি এবং সেগুলি পার্স করার ক্ষমতা প্রদান করে। অপশন তৈরির সময় আপনি তাদের মানও নির্ধারণ করতে পারেন এবং ব্যবহারকারীর ইনপুট যাচাই করতে পারেন। এই লাইব্রেরি ব্যবহার করে কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করা অনেক সহজ এবং আরও শক্তিশালী হয়ে ওঠে।
Apache Commons CLI একটি Java লাইব্রেরি যা কমান্ড লাইন আর্গুমেন্ট পার্সিং সহজ করে। এটি আপনাকে কমান্ড লাইন আর্গুমেন্টগুলির মধ্যে option তৈরি করতে সহায়তা করে, যা বিভিন্ন প্রকারভেদে হতে পারে, যেমন Required এবং Optional।
এই গাইডে, আমরা আলোচনা করব Option এর বিভিন্ন প্রকারভেদ এবং কীভাবে Required এবং Optional অপশনগুলো ব্যবহার করা যায়।
Option এর প্রকারভেদ
- Required Option: এই ধরনের অপশন অবশ্যই কমান্ড লাইন আর্গুমেন্ট হিসেবে প্রদান করতে হবে। এটি ব্যবহারকারীকে বাধ্য করে আর্গুমেন্ট প্রদান করতে।
- Optional Option: এই ধরনের অপশন দেওয়া হলে আর্গুমেন্ট প্রদান করা আবশ্যক নয়। এটি ব্যবহারকারীকে ঐ অপশনটি বাদ দেওয়ার স্বাধীনতা দেয়।
Required Option
Required Option এমন একটি অপশন যা ব্যবহারকারীকে কমান্ড লাইন ইনপুটে অবশ্যই দিতে হবে। যদি এটি না দেওয়া হয়, তাহলে ParseException ঘটবে বা HelpFormatter ব্যবহার করে সাহায্য প্রদর্শিত হবে।
Required Option তৈরি করা
import org.apache.commons.cli.*;
public class CLIExample {
public static void main(String[] args) {
// Option তৈরি করা
Options options = new Options();
// 'input' অপশন তৈরি করা যা Required
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true); // এটি একটি Required অপশন
options.addOption(input);
// 'output' অপশন তৈরি করা যা Optional
Option output = new Option("o", "output", true, "Output file");
output.setRequired(false); // এটি একটি Optional অপশন
options.addOption(output);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন চেক করা
if (cmd.hasOption("input")) {
System.out.println("Input file: " + cmd.getOptionValue("input"));
}
// 'output' অপশন চেক করা
if (cmd.hasOption("output")) {
System.out.println("Output file: " + cmd.getOptionValue("output"));
}
} catch (ParseException e) {
// ভুল আর্গুমেন্ট দেয়ার ক্ষেত্রে Help দেখানো
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIExample", options);
}
}
}
ব্যাখ্যা:
inputঅপশনটি required করা হয়েছে। অর্থাৎ, যদি এটি না দেয়া হয়, তাহলে কমান্ড লাইন আর্গুমেন্টের মধ্যে এটি থাকা বাধ্যতামূলক।outputঅপশনটি optional করা হয়েছে। এটি দেয়া হলে কার্যকর হবে, কিন্তু না দিলে সমস্যা হবে না।
Example:
java CLIExample -i input.txt -o output.txt
যদি আপনি -i অপশনটি বাদ দেন, তাহলে HelpFormatter সাহায্য প্রদর্শন করবে।
Optional Option
Optional Option এমন একটি অপশন যা আর্গুমেন্ট হিসেবে প্রদান করা আবশ্যক নয়। এটি ব্যবহারকারীর সুবিধা অনুযায়ী দেয়া হতে পারে অথবা বাদ দেয়া যেতে পারে।
Optional Option তৈরি করা
import org.apache.commons.cli.*;
public class CLIExample {
public static void main(String[] args) {
// Option তৈরি করা
Options options = new Options();
// 'input' অপশন তৈরি করা যা Required
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true); // এটি একটি Required অপশন
options.addOption(input);
// 'output' অপশন তৈরি করা যা Optional
Option output = new Option("o", "output", true, "Output file");
output.setRequired(false); // এটি একটি Optional অপশন
options.addOption(output);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন চেক করা
if (cmd.hasOption("input")) {
System.out.println("Input file: " + cmd.getOptionValue("input"));
}
// 'output' অপশন চেক করা
if (cmd.hasOption("output")) {
System.out.println("Output file: " + cmd.getOptionValue("output"));
}
} catch (ParseException e) {
// ভুল আর্গুমেন্ট দেয়ার ক্ষেত্রে Help দেখানো
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIExample", options);
}
}
}
ব্যাখ্যা:
inputঅপশনটি required করা হয়েছে, যা কমান্ডে প্রদান করা বাধ্যতামূলক।outputঅপশনটি optional করা হয়েছে, যা প্রদান না করলেও প্রোগ্রাম সঠিকভাবে কাজ করবে।
Example:
java CLIExample -i input.txt
এখানে output অপশন বাদ দিলেও কিছু সমস্যা হবে না, কারণ এটি optional।
HelpFormatter ব্যবহার
যখন কোনও Required অপশন সরানো হয়, তখন HelpFormatter ব্যবহার করে ব্যবহারকারীর জন্য সাহায্য প্রদর্শন করা যায়। এটি কমান্ড লাইনে সঠিক আর্গুমেন্ট ও অপশন দেখাবে।
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIExample", options);
এটি CLIExample প্রোগ্রামটির জন্য সঠিক কমান্ড এবং আর্গুমেন্টের উদাহরণ দেখাবে, যেমন:
CLIExample -i input -o output
-i,--input Input file
-o,--output Output file
সারাংশ
Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি Required এবং Optional অপশনগুলি সহজে তৈরি করতে পারেন। Required অপশন ব্যবহারকারীকে আর্গুমেন্ট প্রদান করতে বাধ্য করে, যা কমান্ড লাইন ইনপুটের জন্য অপরিহার্য। অন্যদিকে, Optional অপশন ব্যবহারকারীকে ঐ আর্গুমেন্টটি প্রদান করতে স্বাধীনতা দেয়। এই দুটি অপশন ব্যবহার করার মাধ্যমে আপনি আপনার কমান্ড লাইন অ্যাপ্লিকেশনকে আরো ফ্লেক্সিবল এবং ব্যবহারকারীর জন্য সুবিধাজনক করে তুলতে পারেন।
Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট পার্সিংয়ের জন্য খুবই জনপ্রিয়। এটি কমান্ড লাইন আর্গুমেন্ট এবং অপশনগুলির সাথে যুক্ত তথ্য পরিচালনা করার জন্য একটি সহজ পদ্ধতি সরবরাহ করে। কমান্ড লাইন আর্গুমেন্টের সাথে Option এর মাধ্যমে যুক্ত আর্গুমেন্ট যোগ করা অত্যন্ত সহজ।
এখানে আমরা দেখবো কিভাবে Option এর সাথে আর্গুমেন্ট যুক্ত করা যায় এবং কীভাবে সেই আর্গুমেন্টকে প্রসেস করা হয়।
1. Option এর সাথে Arguments যোগ করা
Option হল কমান্ড লাইন আর্গুমেন্টের জন্য একটি নির্দিষ্ট অপশন বা পতাকা (flag)। প্রতিটি Option এর সাথে সাধারণত দুটি ব্যাপার থাকে:
- মুল্য (Value) : যেটি অপশনের সাথে যুক্ত থাকে, যেমন নাম বা বয়স।
- বৈশিষ্ট্য (Attributes) : অপশনের সাথে বিভিন্ন বৈশিষ্ট্য, যেমন
required,hasArgইত্যাদি।
1.1. Option তৈরি করা এবং আর্গুমেন্ট যোগ করা
আপনি যদি একটি অপশন তৈরি করতে চান যা আর্গুমেন্ট গ্রহণ করবে, তবে hasArg(true) মেথডটি ব্যবহার করতে হবে।
উদাহরণ: Option এর সাথে আর্গুমেন্ট যোগ করা
import org.apache.commons.cli.*;
public class CommandLineExample {
public static void main(String[] args) {
// Option এর জন্য একটি Options অবজেক্ট তৈরি করা
Options options = new Options();
// --name অপশন তৈরি করা, যা আর্গুমেন্ট গ্রহণ করবে (hasArg(true))
options.addOption("n", "name", true, "Your name");
// --age অপশন তৈরি করা, যা আর্গুমেন্ট গ্রহণ করবে (hasArg(true))
options.addOption("a", "age", true, "Your age");
// --help অপশন তৈরি করা, যা আর্গুমেন্ট গ্রহণ করবে না (hasArg(false))
options.addOption("h", "help", false, "Show help");
// CommandLineParser তৈরি করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// --help অপশন চেক করা
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
System.exit(0);
}
// --name অপশনের আর্গুমেন্ট প্রিন্ট করা
if (cmd.hasOption("n")) {
String name = cmd.getOptionValue("n");
System.out.println("Hello, " + name + "!");
}
// --age অপশনের আর্গুমেন্ট প্রিন্ট করা
if (cmd.hasOption("a")) {
String age = cmd.getOptionValue("a");
System.out.println("Your age is " + age);
}
} catch (ParseException e) {
System.out.println("Parsing failed. Reason: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
}
}
}
ব্যাখ্যা:
- Options: এটি কমান্ড লাইন আর্গুমেন্টের অপশনগুলির জন্য ব্যবহৃত হয়। এখানে
--name,--ageএবং--helpঅপশনগুলো তৈরি করা হয়েছে।hasArg(true): এটি নির্দেশ করে যে অপশনটি একটি আর্গুমেন্ট গ্রহণ করবে।hasArg(false): এটি নির্দেশ করে যে অপশনটি কোনো আর্গুমেন্ট গ্রহণ করবে না (যেমন--helpঅপশনটি)।
- CommandLineParser: এটি কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য ব্যবহৃত হয়। এখানে আমরা
DefaultParserব্যবহার করেছি। - cmd.getOptionValue(): এটি অপশনের সাথে যুক্ত আর্গুমেন্টের মান বের করার জন্য ব্যবহৃত হয়।
2. কমান্ড লাইন আর্গুমেন্ট ব্যবহার
এই কোডটি চালানোর সময় আপনি কমান্ড লাইন থেকে আর্গুমেন্ট পাঠাতে পারবেন। এখানে কয়েকটি উদাহরণ দেওয়া হলো:
উদাহরণ 1: নাম এবং বয়স সহ
java CommandLineExample -n John -a 25
আউটপুট:
Hello, John!
Your age is 25
উদাহরণ 2: হেল্প দেখানো
java CommandLineExample -h
আউটপুট:
Usage: CommandLineExample
-a <age> Your age
-h, --help Show help
-n <name> Your name
উদাহরণ 3: শুধুমাত্র নাম সহ
java CommandLineExample -n Jane
আউটপুট:
Hello, Jane!
3. এরর হ্যান্ডলিং
যদি কমান্ড লাইন আর্গুমেন্টে কোনো ভুল থাকে, তবে ব্যবহারকারীর জন্য একটি সাহায্য বার্তা প্রদর্শন করা উচিত। এর জন্য HelpFormatter ব্যবহার করা হয়, যা কমান্ড লাইন আর্গুমেন্টের সাহায্য প্রদর্শন করে।
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineExample", options);
এটি সঠিক আর্গুমেন্ট গুলো এবং তাদের ব্যাখ্যা দেখাবে।
সারাংশ
Apache Commons CLI লাইব্রেরি Option এর মাধ্যমে কমান্ড লাইন আর্গুমেন্ট গ্রহণ এবং প্রক্রিয়া করার একটি সহজ এবং কার্যকরী উপায় সরবরাহ করে। Option এর সাথে আর্গুমেন্ট যোগ করতে hasArg(true) ব্যবহার করতে হয় এবং cmd.getOptionValue() মেথডের মাধ্যমে আর্গুমেন্টের মান বের করা হয়। এই লাইব্রেরিটি কাস্টম কমান্ড লাইন আর্গুমেন্ট পার্সিংয়ের জন্য খুবই উপকারী এবং সাহায্যকারী।
Apache Commons CLI লাইব্রেরি কমান্ড লাইন ইন্টারফেস (CLI) তৈরি করতে ব্যবহৃত হয় এবং এটি Short Options (একক অক্ষরের অপশন) এবং Long Options (পূর্ণ অক্ষরের অপশন) সমর্থন করে। এই অপশনগুলি ব্যবহারকারীদের ইনপুট হিসেবে নির্দিষ্ট আর্গুমেন্ট বা অপশন নির্বাচন করার সুযোগ দেয়, যা অ্যাপ্লিকেশনটির আচরণ কাস্টমাইজ করতে সহায়তা করে।
এখানে Short Options এবং Long Options ব্যবহারের কৌশল দেখানো হবে।
1. Short Options এবং Long Options এর মধ্যে পার্থক্য
- Short Option: একক অক্ষরের অপশন, সাধারণত একটি হাইফেন (-) দিয়ে শুরু হয়। যেমন:
-h,-fইত্যাদি। - Long Option: পূর্ণ শব্দের অপশন, যা দুইটি হাইফেন (--) দিয়ে শুরু হয়। যেমন:
--help,--fileইত্যাদি।
2. Apache Commons CLI এর মাধ্যমে Short এবং Long Options ব্যবহার
এখানে Apache Commons CLI ব্যবহার করে Short Options এবং Long Options এর মাধ্যমে কমান্ড লাইন আর্গুমেন্ট প্রক্রিয়া করার একটি উদাহরণ দেওয়া হলো।
কমান্ড লাইন অপশন কনফিগারেশন
import org.apache.commons.cli.*;
public class CLIExample {
public static void main(String[] args) {
// Create options object
Options options = new Options();
// Add short and long options
options.addOption("h", "help", false, "Show help");
options.addOption("f", "file", true, "Input file");
options.addOption("v", "verbose", false, "Verbose output");
// Create parser
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// Parse the command line arguments
cmd = parser.parse(options, args);
// Check if help option is present
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIExample", options);
}
// Check for file option and print file value
if (cmd.hasOption("f")) {
System.out.println("File: " + cmd.getOptionValue("f"));
}
// Check for verbose flag
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
}
} catch (ParseException e) {
System.err.println("Error parsing command line arguments: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- Short Option:
-hঅথবা-fএমন অপশন যা একক অক্ষরের মাধ্যমে নির্দিষ্ট করা হয়।options.addOption("h", "help", false, "Show help");এ-hএবং--helpঅপশন একসাথে তৈরি করা হয়েছে। এই অপশনটি কোনো আর্গুমেন্ট গ্রহণ করে না।options.addOption("f", "file", true, "Input file");এখানে-fএবং--fileঅপশন যোগ করা হয়েছে, যেখানেtrueমানে হল যে এটি একটি আর্গুমেন্ট গ্রহণ করবে।
- Long Option:
--helpএবং--fileঅপশনগুলোকে পূর্ণ শব্দ হিসাবে ব্যবহৃত করা হয়, যা অধিক বোধগম্য এবং পরিষ্কার।
- CommandLineParser:
DefaultParserব্যবহার করে আর্গুমেন্ট পার্স করা হয় এবং পরবর্তী ধাপে কমান্ড লাইনে প্রাপ্ত অপশন অনুযায়ী কার্যক্রম পরিচালনা করা হয়।
- HelpFormatter:
- যদি
-hবা--helpঅপশন দেওয়া হয়, তাহলেHelpFormatterদিয়ে অপশনের সাহায্য নিয়ে হেল্প মেসেজ প্রদর্শন করা হয়।
- যদি
3. Command Line Example
এখন, আমরা যদি উপরের প্রোগ্রামটি কমান্ড লাইনে রান করি, তবে কিছু উদাহরণ দেখানো হবে:
1. হেল্প অপশন ব্যবহার (Short and Long)
Command:
java CLIExample -h
অথবা
java CLIExample --help
Output:
CLIExample [options]
Options:
-h, --help Show help
-f, --file Input file
-v, --verbose Verbose output
2. ফাইল অপশন ব্যবহার (Short and Long)
Command:
java CLIExample -f myfile.txt
অথবা
java CLIExample --file myfile.txt
Output:
File: myfile.txt
3. Verbose Mode ব্যবহার (Short Option)
Command:
java CLIExample -v
Output:
Verbose mode enabled
4. চেকিং Multiple Options
আপনি একাধিক অপশন একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, -f, -v, এবং -h অপশন একসাথে দেওয়া হতে পারে।
Command:
java CLIExample -f myfile.txt -v
Output:
File: myfile.txt
Verbose mode enabled
এখানে, -v অপশনটি verbose mode সক্ষম করেছে এবং -f অপশনটি ফাইলের নাম দেখিয়েছে।
5. Default Value এবং Conditional Logic
যদি কোনো অপশন না দেওয়া হয়, তবে আপনি default value সেট করতে পারেন এবং আর্গুমেন্ট বা অপশন অনুপস্থিত থাকলে নির্দিষ্ট শর্তে আচরণ পরিবর্তন করতে পারেন।
if (!cmd.hasOption("f")) {
System.out.println("No file provided, using default file.");
}
এটি নিশ্চিত করবে যে যদি -f বা --file অপশনটি না দেওয়া হয়, তাহলে আপনি ডিফল্ট ফাইল ব্যবহার করতে পারবেন।
সারাংশ
Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি Short Options এবং Long Options যোগ করতে পারবেন এবং ক্লিন ও কার্যকরী CLI ইন্টারফেস তৈরি করতে পারবেন। Options.addOption() এর মাধ্যমে আপনি কমান্ড লাইন অপশন এবং আর্গুমেন্ট সংজ্ঞায়িত করতে পারেন, এবং CommandLineParser ব্যবহার করে সেই অপশনগুলি পার্স করতে পারেন। এই কৌশলগুলো ব্যবহার করে আপনি অ্যাপ্লিকেশনের ফ্লেক্সিবিলিটি এবং ইউজার এক্সপেরিয়েন্স উন্নত করতে পারবেন।
Read more