Apache Commons CLI লাইব্রেরি Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট পার্সিং এবং ভ্যালিডেশন সহজ করে। এটি বিশেষভাবে সহায়ক যখন আপনি কমান্ড লাইন আর্গুমেন্টের জন্য ভ্যালিডেশন এবং ইউজার হেল্প মেসেজ তৈরি করতে চান। কমান্ড লাইন আর্গুমেন্টগুলির সঠিকতা নিশ্চিত করার জন্য CLI ভ্যালিডেশন এবং ব্যবহারকারীদের জন্য সাহায্য প্রদানে Apache Commons CLI একটি শক্তিশালী এবং সহজ উপায় প্রদান করে।
Command Line Validation
Command Line Validation হল একটি প্রক্রিয়া যেখানে আপনি কমান্ড লাইন আর্গুমেন্টগুলির সঠিকতা যাচাই করেন, যেমন অপশনগুলির উপস্থিতি, তাদের মান, এবং অন্যান্য শর্তাবলী। Apache Commons CLI ব্যবহার করে আপনি সহজেই আর্গুমেন্টগুলো যাচাই করতে পারেন এবং ত্রুটি হলে ব্যবহারকারীদের উপযুক্ত ত্রুটি বার্তা প্রদর্শন করতে পারেন।
Option Validation
আপনি যদি নির্দিষ্ট আর্গুমেন্ট প্রাপ্তির জন্য শর্ত যোগ করতে চান, তবে এটি করতে পারেন। যেমন:
- অপশনটি আবশ্যক কিনা।
- অপশনের মান সঠিক কিনা।
নিচে একটি উদাহরণ দেখানো হলো যেখানে কমান্ড লাইন আর্গুমেন্টগুলো যাচাই করা হচ্ছে এবং ভুল ইনপুটের জন্য ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।
import org.apache.commons.cli.*;
public class CommandLineValidationExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
options.addOption("n", "name", true, "Enter your name");
options.addOption("a", "age", true, "Enter your age");
options.addOption("h", "help", false, "Show help");
// কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য পজার
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// সাহায্য প্রদর্শনের জন্য
if (cmd.hasOption("h")) {
printHelp(options);
return;
}
// নাম এবং বয়স যাচাই
if (!cmd.hasOption("n") || !cmd.hasOption("a")) {
throw new ParseException("Both name and age are required.");
}
String name = cmd.getOptionValue("n");
String age = cmd.getOptionValue("a");
// আর্গুমেন্ট আউটপুট করা
System.out.println("Name: " + name);
System.out.println("Age: " + age);
} catch (ParseException e) {
System.err.println("Error: " + e.getMessage());
printHelp(options);
}
}
// সাহায্য বার্তা প্রদর্শন
private static void printHelp(Options options) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineValidationExample", options);
}
}
কোডের ব্যাখ্যা:
- Options Object: এখানে দুটি অপশন (
-nএবং-a) তৈরি করা হয়েছে, যেখানে-nব্যবহারকারীর নাম এবং-aব্যবহারকারীর বয়স নিবে। - Command Line Validation:
cmd.hasOption("n")এবংcmd.hasOption("a")দিয়ে যাচাই করা হচ্ছে যে, ব্যবহারকারী প্রয়োজনীয় অপশনগুলি দিয়েছেন কিনা। যদি না দেন, তবে একটিParseExceptionসৃষ্টি হবে এবং ত্রুটি বার্তা দেখানো হবে। - Help Option:
-hঅপশন ব্যবহারকারীর সাহায্যের জন্য রাখা হয়েছে। যদি ব্যবহারকারী এই অপশনটি দেয়, তবে হেল্প বার্তা প্রদর্শন করা হবে।
উদাহরণ চলানোর সময়:
java CommandLineValidationExample -n John -a 25
তাহলে আউটপুট হবে:
Name: John
Age: 25
আর যদি:
java CommandLineValidationExample -n John
তবে ত্রুটি বার্তা প্রদর্শিত হবে:
Error: Both name and age are required.
Help Option
Help Option ব্যবহারকারীদের জন্য একটি গুরুত্বপূর্ণ ফিচার, যা অ্যাপ্লিকেশন ব্যবহারের সহজতা বৃদ্ধি করে। Apache Commons CLI-এর HelpFormatter ব্যবহার করে আপনি কমান্ড লাইন আর্গুমেন্টের জন্য স্বয়ংক্রিয়ভাবে সাহায্য বার্তা তৈরি করতে পারেন। এটি আপনার অ্যাপ্লিকেশনটির অপশনগুলোর বর্ণনা এবং কিভাবে ব্যবহার করা যাবে তা পরিষ্কারভাবে উপস্থাপন করে।
HelpFormatter উদাহরণ
import org.apache.commons.cli.*;
public class HelpOptionExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
options.addOption("n", "name", true, "Enter your name");
options.addOption("a", "age", true, "Enter your age");
options.addOption("h", "help", false, "Show help");
// কমান্ড লাইন আর্গুমেন্ট পার্স করার জন্য পজার
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// সাহায্য প্রদর্শন
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("HelpOptionExample", options);
return;
}
// নাম এবং বয়স সংগ্রহ করা
String name = cmd.getOptionValue("n");
String age = cmd.getOptionValue("a");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
} catch (ParseException e) {
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("HelpOptionExample", options);
}
}
}
এই কোডটি কমান্ড লাইন আর্গুমেন্ট -h এর মাধ্যমে সাহায্য মেসেজ প্রদর্শন করবে। উদাহরণস্বরূপ:
java HelpOptionExample -h
তাহলে আউটপুট হবে:
Usage: HelpOptionExample
-a <age> Enter your age
-h Show help
-n <name> Enter your name
এটি ব্যবহারকারীদের জন্য অ্যাপ্লিকেশনের অপশনগুলো এবং তাদের ব্যবহার সম্পর্কে বিস্তারিত তথ্য প্রদান করবে।
সারাংশ
Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট পার্সিং এবং validation করার জন্য অত্যন্ত কার্যকরী। আপনি সহজেই অপশন যাচাই করতে পারেন এবং ত্রুটি হলে সঠিক ত্রুটি বার্তা প্রদর্শন করতে পারেন। এছাড়া, HelpFormatter ব্যবহার করে আপনি একটি সুসংগঠিত এবং ব্যবহারকারী-বান্ধব সাহায্য বার্তা তৈরি করতে পারেন। এই টুলটি ব্যবহারকারীদের জন্য অ্যাপ্লিকেশন ব্যবহারের প্রক্রিয়াকে অনেক সহজ এবং বোধগম্য করে তোলে।
অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি কমান্ড লাইন আর্গুমেন্টস পরিচালনা করার জন্য একটি শক্তিশালী টুল। এটি আর্গুমেন্টগুলির সঠিকতা যাচাই করতে সহায়তা করে এবং প্রয়োজনীয় ক্ষেত্রে ডিফল্ট মান প্রদান করার সুযোগ দেয়। এই ফিচারগুলির মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন বা স্ক্রিপ্টে ব্যবহারকারীর ইনপুটের মান যাচাই করতে এবং ডিফল্ট মান সেট করে আরও কার্যকরী ও ব্যবহারযোগ্য অ্যাপ্লিকেশন তৈরি করতে পারেন।
Option Validation এবং Default Values এর গুরুত্ব:
- Option Validation: এটি নিশ্চিত করে যে ব্যবহারকারীরা সঠিক আর্গুমেন্ট এবং ভ্যালু পাস করছে কিনা। এটি প্রোগ্রামের সঠিকতা এবং স্থিতিশীলতা রক্ষা করতে সাহায্য করে।
- Default Values: কখনো কখনো ব্যবহারকারী যদি কোনো নির্দিষ্ট আর্গুমেন্ট না দেয়, তবে আপনি প্রোগ্রামে একটি ডিফল্ট মান ব্যবহার করতে পারেন, যা প্রোগ্রামটির কার্যক্রম চালু রাখতে সহায়তা করে।
Option Validation
অ্যাপাচি কমন্স সিআলআই লাইব্রেরি আপনার আর্গুমেন্টগুলোর মান যাচাই করতে সাহায্য করে। আপনি প্রতিটি অপশন তৈরির সময় তার জন্য নির্দিষ্ট শর্ত (যেমন আর্গুমেন্টের ধরন, বাধ্যতামূলক ফ্ল্যাগ, ইত্যাদি) সেট করতে পারেন।
Option Validation উদাহরণ
ধরা যাক, আপনার একটি অপশন আছে যেখানে একটি ইনটিজার প্যারামিটার প্রয়োজন এবং সেটা ম্যান্ডেটরি (অর্থাৎ সেটি বাধ্যতামূলক)। আপনি এটি অ্যাপাচি কমন্স সিআলআই এর মাধ্যমে এইভাবে যাচাই করতে পারেন:
import org.apache.commons.cli.*;
public class OptionValidationExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
Option numberOption = new Option("n", "number", true, "Enter a number");
numberOption.setRequired(true); // ম্যান্ডেটরি
numberOption.setType(Integer.class); // ইনটিজার টাইপ
options.addOption(numberOption);
// কমান্ড লাইন পার্সার তৈরি করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// যদি অপশনটি ঠিকমত পাস না করা হয়
if (cmd.hasOption("n")) {
String numberValue = cmd.getOptionValue("n");
System.out.println("Entered number: " + numberValue);
}
} catch (ParseException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
এখানে, -n অপশনটি বাধ্যতামূলক (ম্যান্ডেটরি) এবং ইনপুট হিসেবে একটি ইনটিজার ভ্যালু আশা করছে। যদি ব্যবহারকারী ভুল ভ্যালু পাস করেন বা অপশনটি না দেন, তবে ত্রুটি বার্তা প্রদর্শিত হবে।
কমান্ড লাইন আর্গুমেন্টস
java OptionValidationExample -n 100
এই ক্ষেত্রে, -n 100 একটি বৈধ আর্গুমেন্ট হিসেবে গ্রহণ করা হবে। অন্যদিকে, যদি ব্যবহারকারী -n এর পরে কোনো মান না দেয় বা ভুল মান পাস করে, তাহলে একটি ত্রুটি দেখানো হবে।
Default Values যোগ করা
কখনো কখনো আপনি কিছু অপশন তৈরি করতে পারেন যেগুলোর জন্য ডিফল্ট মান থাকতে পারে, যদি ব্যবহারকারী সেগুলো না দিয়ে থাকে। অ্যাপাচি কমন্স সিআলআই লাইব্রেরি ডিফল্ট মান যোগ করার জন্য একটি সহজ পদ্ধতি সরবরাহ করে।
Default Values উদাহরণ
import org.apache.commons.cli.*;
public class DefaultValuesExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
// ডিফল্ট ভ্যালু সহ অপশন তৈরি করা
Option userOption = new Option("u", "user", true, "Username");
userOption.setRequired(false); // এটি ম্যান্ডেটরি নয়
options.addOption(userOption);
Option ageOption = new Option("a", "age", true, "Age");
ageOption.setRequired(false); // এটি ম্যান্ডেটরি নয়
options.addOption(ageOption);
// কমান্ড লাইন পার্সার তৈরি করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// ডিফল্ট মান সেট করা
String username = cmd.hasOption("u") ? cmd.getOptionValue("u") : "Guest";
String age = cmd.hasOption("a") ? cmd.getOptionValue("a") : "Unknown";
// আউটপুট
System.out.println("Username: " + username);
System.out.println("Age: " + age);
} catch (ParseException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
এখানে, -u এবং -a অপশনগুলো ব্যবহারকারীর দ্বারা পাস করা যাবে। যদি ব্যবহারকারী কোনও অপশন পাস না করেন, তাহলে ডিফল্ট মান "Guest" এবং "Unknown" সেট করা হবে।
কমান্ড লাইন আর্গুমেন্টস
java DefaultValuesExample -u John -a 25
এই কমান্ডে, ব্যবহারকারী -u এবং -a আর্গুমেন্টস পাস করেছেন, এবং সেগুলোর মান যথাক্রমে John এবং 25 হবে। তবে যদি কোনো অপশন না দেয়া হয়, তাহলে ডিফল্ট মান ব্যবহার করা হবে।
সারাংশ
অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি আপনার কমান্ড লাইন আর্গুমেন্টস পরিচালনা এবং যাচাই করার জন্য অত্যন্ত শক্তিশালী টুল সরবরাহ করে। আপনি Option Validation এর মাধ্যমে আর্গুমেন্টের মান এবং ধরন যাচাই করতে পারেন এবং Default Values যোগ করে অপশনগুলোর জন্য ডিফল্ট মান সেট করতে পারেন। এই ফিচারগুলো অ্যাপ্লিকেশন বা স্ক্রিপ্ট তৈরি করার সময় আর্গুমেন্ট ব্যবহারের নিয়ম এবং সঠিকতা নিশ্চিত করতে সাহায্য করে।
Apache Commons CLI লাইব্রেরি ব্যবহার করে কমান্ড-লাইন আর্গুমেন্টগুলির প্রোসেসিং এবং ভ্যালিডেশন করা খুবই সহজ। এই লাইব্রেরি Required এবং Optional আর্গুমেন্ট ভ্যালিডেশন প্রদান করে, যা নিশ্চিত করে যে ইউজারের প্রদান করা আর্গুমেন্টগুলো সঠিক এবং পূর্ণ হয়েছে। এখানে আমরা দেখব কিভাবে Required (অবশ্যই প্রয়োজনীয়) এবং Optional (ঐচ্ছিক) আর্গুমেন্টগুলির ভ্যালিডেশন করা যায় এবং সঠিক ইনপুট নিশ্চিত করা যায়।
১. Required Arguments Validation
Required Arguments হল এমন আর্গুমেন্টগুলো, যেগুলি ইউজারকে কমান্ড-লাইন থেকে প্রদান করতেই হবে। যদি ইউজার এই আর্গুমেন্টগুলি প্রদান না করেন, তবে অ্যাপ্লিকেশনটি একটি ত্রুটি বার্তা দেখাবে এবং সাহায্য মেসেজ প্রদর্শন করবে।
উদাহরণ:
ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন তৈরি করা হচ্ছে, যেখানে ইউজারকে একটি ইনপুট ফাইলের নাম এবং একটি আউটপুট ফাইল নাম প্রদান করতে হবে। ইনপুট ফাইলটি একটি Required Argument।
import org.apache.commons.cli.*;
public class RequiredArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
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) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("RequiredArgumentValidation", options);
}
}
}
ব্যাখ্যা:
setRequired(true): ইনপুট ফাইল অপশনটি Required করা হয়েছে, অর্থাৎ এই অপশনটি অবশ্যই ইউজারকে প্রদান করতে হবে।HelpFormatter: যদি-fঅপশন প্রদান না করা হয়, তবে সাহায্য মেসেজ প্রদর্শিত হবে।
আউটপুট:
- যদি আপনি
-fঅপশন না দেন:
java RequiredArgumentValidation
আউটপুট:
Error: Missing required option: -f
এখানে -f অপশন না দেওয়ার কারণে একটি ত্রুটি বার্তা প্রদর্শিত হবে এবং সাহায্য মেসেজ দেখানো হবে।
২. Optional Arguments Validation
Optional Arguments হল সেই আর্গুমেন্টগুলো, যেগুলি ইউজার চাইলে দিতে পারে, তবে তা দেওয়া বাধ্যতামূলক নয়। যদিও ইউজার এটি প্রদান না করলেও অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করতে পারে, আপনি চাইলে এগুলোর জন্য কিছু ভ্যালিডেশন প্রয়োগ করতে পারেন।
উদাহরণ:
ধরা যাক, আমরা একটি অ্যাপ্লিকেশন তৈরি করেছি, যেখানে ইউজার একটি ইনপুট ফাইলের নাম (Required) এবং একটি আউটপুট ফাইলের নাম (Optional) প্রদান করতে পারে। তবে, যদি আউটপুট ফাইলের নাম প্রদান করা হয়, তবে তার একটি বৈধ ফাইল এক্সটেনশন থাকতে হবে (যেমন .txt অথবা .csv)।
import org.apache.commons.cli.*;
public class OptionalArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
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);
// আউটপুট ফাইল এক্সটেনশন ভ্যালিডেশন
if (!output.endsWith(".txt") && !output.endsWith(".csv")) {
System.err.println("Error: Output file must be .txt or .csv");
return;
}
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionalArgumentValidation", options);
}
}
}
ব্যাখ্যা:
setRequired(true): ইনপুট ফাইলটি Required আর্গুমেন্ট হিসেবে চিহ্নিত করা হয়েছে, এবং আউটপুট ফাইলটি Optional আর্গুমেন্ট হিসেবে চিহ্নিত।- Output File Validation: আউটপুট ফাইলের নামের এক্সটেনশন যদি
.txtঅথবা.csvনা হয়, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
আউটপুট:
- যদি আউটপুট ফাইল
.txtবা.csvএক্সটেনশনের বাইরে কিছু দেওয়া হয়:
java OptionalArgumentValidation -f input.txt -o output.pdf
আউটপুট:
Input file: input.txt
Output file: output.pdf
Error: Output file must be .txt or .csv
- যদি আউটপুট ফাইল সঠিক এক্সটেনশনসহ প্রদান করা হয়:
java OptionalArgumentValidation -f input.txt -o output.csv
আউটপুট:
Input file: input.txt
Output file: output.csv
৩. Combined Example (Required এবং Optional Arguments Validation)
এখানে আমরা একটি কেস দেখাব যেখানে Required এবং Optional আর্গুমেন্ট দুটি একসাথে ভ্যালিডেট করা হচ্ছে। -f অপশন অবশ্যই প্রদান করতে হবে এবং -o অপশনটি যদি প্রদান করা হয়, তবে তার সঠিক এক্সটেনশন থাকতে হবে।
import org.apache.commons.cli.*;
public class CombinedArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
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);
// আউটপুট ফাইল এক্সটেনশন ভ্যালিডেশন
if (!output.endsWith(".txt") && !output.endsWith(".csv")) {
System.err.println("Error: Output file must be .txt or .csv");
return;
}
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CombinedArgumentValidation", options);
}
}
}
সারাংশ
Apache Commons CLI ব্যবহার করে আপনি Required এবং Optional আর্গুমেন্টের ভ্যালিডেশন খুব সহজে করতে পারেন। Required আর্গুমেন্টগুলি নিশ্চিত করে যে ইউজার অবশ্যই সেই আর্গুমেন্ট প্রদান করবেন, এবং Optional আর্গুমেন্টের ক্ষেত্রে আপনি অতিরিক্ত শর্ত প্রয়োগ করতে পারেন, যেমন একটি নির্দিষ্ট ফাইল এক্সটেনশন অথবা একটি কাস্টম ভ্যালিডেশন। এটি ইউজারের ইনপুটকে সঠিকভাবে যাচাই করতে সাহায্য করে এবং অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করে।
Apache Commons CLI লাইব্রেরি ব্যবহারকারীদের জন্য কমান্ড লাইন ইনপুট পার্সিংয়ের একটি শক্তিশালী সমাধান প্রদান করে। তবে, HelpFormatter ক্লাসের মাধ্যমে আমরা সহজেই Command Line Help তৈরি করতে পারি, যা ব্যবহারকারীদের নির্দেশনা প্রদান করে কিভাবে অ্যাপ্লিকেশনটি ব্যবহার করতে হবে। এটি অ্যাপ্লিকেশনটিকে আরও ব্যবহারকারী-বান্ধব এবং নির্ভুল করে তোলে।
এই টিউটোরিয়ালে, আমরা Apache Commons CLI লাইব্রেরির HelpFormatter ক্লাস ব্যবহার করে কিভাবে কমান্ড লাইন হেল্প তৈরি করা যায় তা দেখব।
HelpFormatter এর ভূমিকা
HelpFormatter ক্লাসটি Apache Commons CLI লাইব্রেরির একটি গুরুত্বপূর্ণ অংশ, যা কমান্ড লাইন অপশনের জন্য সাহায্য বা নির্দেশিকা প্রদানের জন্য ব্যবহৃত হয়। এটি আপনাকে কমান্ড লাইন আর্গুমেন্টের ব্যবহারের ধরন এবং উপযুক্ত অপশনগুলির একটি সুসংগঠিত এবং পাঠযোগ্য আউটপুট প্রদান করতে সহায়ক।
HelpFormatter সাধারণত ব্যবহারকারীর জন্য অ্যাপ্লিকেশনের কিভাবে ব্যবহার করা হবে তা স্পষ্ট করে।
HelpFormatter ব্যবহার করার পদক্ষেপ
- Options তৈরি করা: প্রথমে, আপনি যে অপশনগুলো চান তা Options অবজেক্টে সংজ্ঞায়িত করবেন।
- Command Line Parser তৈরি করা: CommandLineParser ব্যবহার করে ইনপুট কমান্ড পার্স করা হবে।
- HelpFormatter ব্যবহার করা: অবশেষে, HelpFormatter ব্যবহার করে অ্যাপ্লিকেশনটি কিভাবে ব্যবহার করতে হবে তার একটি সাহায্য বা হেল্প পৃষ্ঠা তৈরি করা হবে।
উদাহরণ: HelpFormatter ব্যবহার করে Command Line Help তৈরি
1. HelpFormatter ব্যবহার করে অপশন তৈরি
ধরি, আমাদের একটি কমান্ড লাইন অ্যাপ্লিকেশন আছে যা কিছু অপশন নেবে যেমন:
-fবা--file: একটি ফাইল পাথ-vবা--version: অ্যাপ্লিকেশন ভার্সন দেখাবে-hবা--help: সাহায্য পৃষ্ঠা দেখাবে
এখন, এই অপশনগুলির জন্য আমরা হেল্প তৈরি করব।
কোড উদাহরণ:
import org.apache.commons.cli.*;
public class CommandLineHelpExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
// -f বা --file অপশন যোগ করা
options.addOption("f", "file", true, "Path to the input file");
// -v বা --version অপশন যোগ করা
options.addOption("v", "version", false, "Show version info");
// -h বা --help অপশন যোগ করা
options.addOption("h", "help", false, "Show this help message");
// কমান্ড লাইন পার্সার তৈরি করা
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
CommandLine line = parser.parse(options, args);
// --help অপশন চেক করা
if (line.hasOption("h")) {
formatter.printHelp("CommandLineHelpExample", options);
return;
}
// --version অপশন চেক করা
if (line.hasOption("v")) {
System.out.println("Version 1.0.0");
return;
}
// --file অপশন চেক করা
if (line.hasOption("f")) {
String filePath = line.getOptionValue("f");
System.out.println("File path: " + filePath);
}
} catch (ParseException exp) {
System.out.println("Error parsing the command line: " + exp.getMessage());
formatter.printHelp("CommandLineHelpExample", options);
}
}
}
2. কোডের ব্যাখ্যা:
- Options অবজেক্টে তিনটি অপশন যোগ করা হয়েছে:
-f(file),-v(version), এবং-h(help)। - HelpFormatter ব্যবহার করা হয়েছে হেল্প পৃষ্ঠা প্রিন্ট করার জন্য।
- যদি ব্যবহারকারী
-hঅথবা--helpঅপশন দেন, তাহলে হেল্প পৃষ্ঠা দেখানো হবে, যেখানে অ্যাপ্লিকেশনের অপশনগুলির ব্যাখ্যা থাকবে।
3. আউটপুট:
যদি
-hবা--helpঅপশন ব্যবহার করা হয়:java CommandLineHelpExample -h CommandLineHelpExample [options] options: -f, --file <file> Path to the input file -v, --version Show version info -h, --help Show this help messageযদি
-vঅপশন ব্যবহার করা হয়:java CommandLineHelpExample -v Version 1.0.0যদি
-fঅপশন ব্যবহার করা হয়:java CommandLineHelpExample -f /path/to/file File path: /path/to/file
HelpFormatter এর কাস্টমাইজেশন
HelpFormatter ক্লাসটি কিছু কাস্টমাইজেশন অপশনও প্রদান করে, যা আপনাকে আউটপুটটিকে আরও ভালভাবে সাজাতে সাহায্য করে।
কাস্টমাইজেশন অপশন:
- width: আউটপুটের চওড়া (লেআউট কন্ট্রোল)
- padding: অপশন এবং বর্ণনার মধ্যে ফাঁকা স্থান
- syntaxPrefix: কমান্ড লাইন সিঙ্কট্যাক্সে প্রিফিক্স যোগ করা
উদাহরণ: HelpFormatter কাস্টমাইজেশন
HelpFormatter formatter = new HelpFormatter();
formatter.setWidth(100); // আউটপুটের চওড়া বাড়ানো
formatter.setPadding(2); // প্যাডিং বাড়ানো
formatter.setSyntaxPrefix("Usage: ");
formatter.printHelp("CommandLineHelpExample", options);
এই কাস্টমাইজেশন অপশনগুলির সাহায্যে আপনি আপনার হেল্প আউটপুট আরও পরিষ্কার এবং ব্যবহারকারীর জন্য উপযোগী করতে পারেন।
সারাংশ
Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি খুব সহজে HelpFormatter ক্লাসের মাধ্যমে কমান্ড লাইন হেল্প তৈরি করতে পারেন। এটি ব্যবহারকারীদের জন্য একটি পরিষ্কার এবং বিস্তারিত নির্দেশিকা প্রদান করে, যাতে তারা কমান্ড লাইন অ্যাপ্লিকেশনটি সঠিকভাবে ব্যবহার করতে পারে। HelpFormatter ক্লাসটি আউটপুট কাস্টমাইজেশন এবং এক্সটেনশন প্রদান করে, যাতে আপনি আপনার অ্যাপ্লিকেশনটি আরও ব্যবহারকারী-বান্ধব করে তুলতে পারেন।
Apache Commons CLI লাইব্রেরিটি Java-তে কমান্ড লাইন ইনপুট প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি ব্যবহারকারীদের জন্য সহজ এবং সুসংগঠিত উপায়ে কমান্ড লাইন আর্গুমেন্ট (arguments) এবং বিকল্প (options) হ্যান্ডলিং করতে সহায়তা করে। এই লাইব্রেরি ব্যবহার করে আপনি সহজেই কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে ব্যবহারকারীরা নির্দিষ্ট বিকল্প এবং আর্গুমেন্ট প্রদান করবে।
এখানে আমরা Usage এবং Syntax প্রদর্শনের জন্য HelpFormatter ক্লাস ব্যবহার করব, যা ব্যবহারকারীদের জন্য আপনার কমান্ড লাইন অ্যাপ্লিকেশনের কিভাবে ব্যবহার করতে হবে তা স্পষ্টভাবে দেখানোর জন্য ব্যবহৃত হয়।
Usage এবং Syntax প্রদর্শন
HelpFormatter ক্লাস কমান্ড লাইন অ্যাপ্লিকেশনের জন্য সহায়ক বার্তা এবং সঠিক Usage ও Syntax প্রদর্শন করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি বিভিন্ন বিকল্প এবং আর্গুমেন্ট সহ একটি সম্পূর্ণ সহায়ক বার্তা প্রদান করতে পারেন।
প্রধান বৈশিষ্ট্য:
- Usage: এটি অ্যাপ্লিকেশনটি কীভাবে চালানো হবে তার একটি সারাংশ দেখায়।
- Syntax: এটি কমান্ডের সঠিক গঠন এবং অনুমোদিত বিকল্পগুলি প্রদর্শন করে।
- Options Description: এটি সমস্ত উপলব্ধ বিকল্প এবং তাদের ব্যাখ্যা দেখায়।
উদাহরণ: Usage এবং Syntax প্রদর্শন
import org.apache.commons.cli.*;
public class HelpFormatterExample {
public static void main(String[] args) {
// বিকল্প তৈরি
Options options = new Options();
Option helpOption = new Option("h", "help", false, "Show help");
options.addOption(helpOption);
Option inputOption = new Option("i", "input", true, "Input file");
options.addOption(inputOption);
Option outputOption = new Option("o", "output", true, "Output file");
options.addOption(outputOption);
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);
// --help চেক করা
if (cmd.hasOption("h")) {
// HelpFormatter ব্যবহার করে সঠিক Usage প্রদর্শন
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("HelpFormatterExample", options);
return;
}
// অন্যান্য বিকল্প চেক করা
if (cmd.hasOption("i")) {
String inputFile = cmd.getOptionValue("i");
System.out.println("Input file: " + inputFile);
}
if (cmd.hasOption("o")) {
String outputFile = cmd.getOptionValue("o");
System.out.println("Output file: " + outputFile);
}
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("HelpFormatterExample", options);
}
}
}
ব্যাখ্যা:
- Options: এখানে আমরা কিছু বিকল্প তৈরি করেছি, যেমন
-hবা--help,-iবা--input,-oবা--output, এবং-vবা--verbose। - HelpFormatter: যদি ব্যবহারকারী
--helpবা-hবিকল্প নির্বাচন করেন, তবে এটি একটি সঠিকUsageএবংSyntaxবার্তা প্রদর্শন করবে যা কিভাবে অ্যাপ্লিকেশনটি ব্যবহার করতে হবে তা বর্ণনা করে। - Command Line Parsing: আর্গুমেন্ট পার্সিংয়ের মাধ্যমে, এই কোডটি ব্যবহারকারীর প্রদানকৃত বিকল্পগুলির ভিত্তিতে কমান্ডের আউটপুট তৈরি করবে।
আউটপুট:
যদি ব্যবহারকারী --help বা -h প্রদান করেন, তাহলে আউটপুট হবে:
Usage: HelpFormatterExample [options]
Options:
-h, --help Show help
-i, --input <file> Input file
-o, --output <file> Output file
-v, --verbose Enable verbose output
এছাড়া, যদি ব্যবহারকারী অন্য কোন বিকল্প প্রদান করেন, তাহলে সেই অনুযায়ী আউটপুট হবে, যেমন:
Input file: input.txt
Output file: output.txt
Verbose mode enabled
HelpFormatter এর সুবিধা
- স্বয়ংক্রিয় সহায়ক বার্তা:
HelpFormatterক্লাস ব্যবহার করলে আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে সঠিক এবং বিস্তারিত সহায়ক বার্তা প্রদান করতে পারে। - স্পষ্ট এবং সুসংগঠিত আউটপুট: এটি CLI অ্যাপ্লিকেশনগুলির জন্য পরিষ্কার এবং সহজবোধ্য
UsageএবংSyntaxআউটপুট প্রদান করে। - বিকল্প ব্যাখ্যা: এটি বিকল্পগুলির স্পষ্ট ব্যাখ্যা প্রদান করে, যাতে ব্যবহারকারী বুঝতে পারে কোন বিকল্প কীভাবে ব্যবহার করতে হবে।
Apache Commons CLI লাইব্রেরি ব্যবহার করে Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট হ্যান্ডলিং খুবই সহজ এবং কার্যকরী। HelpFormatter ক্লাসের সাহায্যে আপনি আপনার অ্যাপ্লিকেশনের জন্য সঠিক Usage এবং Syntax বার্তা তৈরি করতে পারেন, যা ব্যবহারকারীদের জন্য অত্যন্ত সহায়ক এবং সহজবোধ্য। এটি বিশেষভাবে কমান্ড লাইন অ্যাপ্লিকেশনের জন্য অপরিহার্য, যেখানে ব্যবহারকারীদের সঠিক আর্গুমেন্টের জন্য সহায়ক বার্তা প্রদর্শন করা প্রয়োজন।
Read more