Non-option Arguments হ্যান্ডল করা

Positional Arguments ব্যবস্থাপনা - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

228

Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি Non-option arguments (যেগুলি অপশন বা আর্গুমেন্ট চিহ্নের (যেমন -f বা --file) ছাড়াই সরাসরি ইনপুট হিসেবে প্রদান করা হয়) সহজেই হ্যান্ডল করতে পারেন। এগুলি সাধারণত পজিশনাল আর্গুমেন্ট (যেমন ইনপুট ফাইল বা আউটপুট ডিরেক্টরি) হয়ে থাকে এবং কোনও বিশেষ ফ্ল্যাগ ছাড়াই সরাসরি কমান্ড লাইন থেকে প্রদান করা হয়।

Non-option arguments সাধারণত একটি অ্যাপ্লিকেশনে অপরিহার্য ইনপুট বা নির্দেশনা হিসেবে ব্যবহৃত হয়, এবং Apache Commons CLI এ এটি CommandLine.getArgs() ব্যবহার করে হ্যান্ডল করা হয়। এই ফিচারটি আপনার CLI অ্যাপ্লিকেশনটি আরও নমনীয় এবং সহজ ব্যবহারযোগ্য করে তোলে।

Non-option Arguments হ্যান্ডল করার পদ্ধতি

এখানে আমরা দেখব কিভাবে Non-option arguments হ্যান্ডল করতে হয় এবং কিভাবে তা CLI প্রোগ্রামে ব্যবহৃত হয়।


১. Maven Dependency:

প্রথমে, যদি আপনি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে Apache Commons CLI ডিপেন্ডেন্সি যোগ করুন:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.4</version>
</dependency>

২. Non-option Arguments Example:

এখন, আমরা একটি উদাহরণ দেখব যেখানে আমরা Non-option arguments হ্যান্ডল করছি। ধরুন, আমাদের একটি অ্যাপ্লিকেশন আছে যা প্রথম ইনপুট আর্গুমেন্ট হিসেবে একটি ইনপুট ফাইল নেবে এবং দ্বিতীয় ইনপুট আর্গুমেন্ট হিসেবে আউটপুট ডিরেক্টরি নেবে। এগুলি Non-option arguments হিসেবে কাজ করবে।

import org.apache.commons.cli.*;

public class NonOptionArgumentExample {

    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);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্সিং
            cmd = parser.parse(options, args);

            // ইনপুট ফাইল নাম গ্রহণ
            String input = cmd.getOptionValue("f");
            System.out.println("Input file: " + input);

            // Non-option arguments প্রক্রিয়া করা
            String[] nonOptionArgs = cmd.getArgs();  // Non-option arguments
            for (String arg : nonOptionArgs) {
                System.out.println("Non-option argument: " + arg);
            }

        } catch (ParseException e) {
            // যদি Required আর্গুমেন্ট না দেওয়া হয়
            System.err.println("Error: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("NonOptionArgumentExample", options);
        }
    }
}

ব্যাখ্যা:

  1. Option Object: Option ব্যবহার করে ইনপুট ফাইলের জন্য একটি অপশন তৈরি করা হয়েছে। এই অপশনটি Required করা হয়েছে, অর্থাৎ এই অপশনটি অবশ্যই প্রদান করতে হবে।
  2. Non-option Arguments: cmd.getArgs() ব্যবহার করা হয়েছে যা শুধুমাত্র Non-option arguments ফিরিয়ে দেয়, যেগুলি অপশন চিহ্ন ছাড়া সরাসরি কমান্ড লাইনে প্রদান করা হয়।

আউটপুট:

  • যদি আপনি একটি ইনপুট ফাইল এবং একটি বা একাধিক Non-option argument প্রদান করেন:
java NonOptionArgumentExample -f input.txt /path/to/output /another/path

আউটপুট:

Input file: input.txt
Non-option argument: /path/to/output
Non-option argument: /another/path

এখানে, /path/to/output এবং /another/path হলো Non-option arguments যেগুলি cmd.getArgs() এর মাধ্যমে বের করা হয়েছে এবং প্রদর্শন করা হয়েছে।


৩. Non-option Arguments এর ভ্যালিডেশন

যেহেতু Non-option arguments সাধারণত পজিশনাল ইনপুট হিসেবে ব্যবহৃত হয়, সুতরাং আপনি এগুলির উপর কিছু ভ্যালিডেশন প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, আপনি চেক করতে পারেন যে ইউজার যথাযথ পরিমাণ ইনপুট প্রদান করেছে কিনা, বা ইনপুট ফাইল এবং আউটপুট ডিরেক্টরি আর্গুমেন্টগুলি সঠিকভাবে প্রদান করা হয়েছে কিনা।

উদাহরণ:

ধরা যাক, আপনার অ্যাপ্লিকেশনটি দুটি Non-option arguments নিতে হবে: একটি ইনপুট ফাইল এবং একটি আউটপুট ডিরেক্টরি। আপনি ভ্যালিডেশন করতে পারেন যে এই দুটি আর্গুমেন্ট সত্যিই প্রদান করা হয়েছে কিনা।

import org.apache.commons.cli.*;

public class NonOptionArgumentValidationExample {

    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);

        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // আর্গুমেন্ট পার্সিং
            cmd = parser.parse(options, args);

            // ইনপুট ফাইল নাম গ্রহণ
            String input = cmd.getOptionValue("f");
            System.out.println("Input file: " + input);

            // Non-option arguments প্রক্রিয়া করা
            String[] nonOptionArgs = cmd.getArgs();  // Non-option arguments

            // Non-option arguments এর সংখ্যা চেক করা
            if (nonOptionArgs.length != 2) {
                System.err.println("Error: You must specify exactly 2 non-option arguments (input and output).");
                return;
            }

            System.out.println("Non-option argument 1 (Output directory): " + nonOptionArgs[0]);
            System.out.println("Non-option argument 2 (Log file): " + nonOptionArgs[1]);

        } catch (ParseException e) {
            // যদি Required আর্গুমেন্ট না দেওয়া হয়
            System.err.println("Error: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("NonOptionArgumentValidationExample", options);
        }
    }
}

ব্যাখ্যা:

  1. Non-option Arguments Count Validation: এখানে আমরা চেক করছি যে ইউজার দুটি Non-option arguments প্রদান করেছেন কিনা। যদি সংখ্যা সঠিক না হয়, তবে একটি ত্রুটি বার্তা দেখানো হয়।

আউটপুট:

  • যদি আপনি যথাযথ আর্গুমেন্ট প্রদান করেন:
java NonOptionArgumentValidationExample -f input.txt /path/to/output /path/to/log

আউটপুট:

Input file: input.txt
Non-option argument 1 (Output directory): /path/to/output
Non-option argument 2 (Log file): /path/to/log
  • যদি আপনি সঠিক সংখ্যা আর্গুমেন্ট প্রদান না করেন:
java NonOptionArgumentValidationExample -f input.txt /path/to/output

আউটপুট:

Error: You must specify exactly 2 non-option arguments (input and output).

সারাংশ

Apache Commons CLI ব্যবহার করে Non-option arguments হ্যান্ডল করা খুবই সহজ। আপনি CommandLine.getArgs() ব্যবহার করে যেকোনো পজিশনাল আর্গুমেন্ট বের করতে পারেন, যা অপশন চিহ্ন ছাড়া সরাসরি কমান্ড লাইন থেকে ইনপুট হিসেবে গ্রহণ করা হয়। এর মাধ্যমে আপনি CLI অ্যাপ্লিকেশনগুলিতে পজিশনাল আর্গুমেন্টের সংখ্যা এবং মান যাচাই করতে পারেন এবং প্রয়োজনে সেগুলির উপর ভ্যালিডেশন প্রয়োগ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...