Multiple Sub-commands হ্যান্ডল করা

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

265

Apache Commons CLI লাইব্রেরি ব্যবহার করে আপনি Multiple Sub-commands হ্যান্ডল করতে পারেন, যার মাধ্যমে একটি কমান্ড-লাইন অ্যাপ্লিকেশন একাধিক সাব-কমান্ড গ্রহণ করতে সক্ষম হয়। প্রতিটি সাব-কমান্ড আলাদা ফাংশনালিটি বা অপশন কনফিগারেশন সরবরাহ করতে পারে। যেমন একটি অ্যাপ্লিকেশন start, stop, বা status নামক সাব-কমান্ডের মাধ্যমে বিভিন্ন কাজ করতে পারে।

এখানে, আমরা দেখব কিভাবে Multiple Sub-commands হ্যান্ডল করা যায় Apache Commons CLI এর মাধ্যমে।


১. Maven Dependency:

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

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

২. Multiple Sub-commands উদাহরণ:

ধরা যাক, আমরা একটি কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করছি যেখানে start, stop, এবং status নামক তিনটি সাব-কমান্ড রয়েছে। প্রতিটি সাব-কমান্ডের জন্য আলাদা অপশন এবং কাজ নির্ধারণ করা হবে।

উদাহরণ:

import org.apache.commons.cli.*;

public class MultipleSubCommandsExample {

    public static void main(String[] args) {
        // অপশন কনফিগারেশন
        Options globalOptions = new Options();

        // Sub-commands তৈরি করা
        Options startOptions = new Options();
        startOptions.addOption("h", "help", false, "Show help for start");

        Options stopOptions = new Options();
        stopOptions.addOption("f", "force", false, "Force stop");

        Options statusOptions = new Options();
        statusOptions.addOption("v", "verbose", false, "Show detailed status");

        // Sub-command parser
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            if (args.length == 0) {
                throw new ParseException("No sub-command provided");
            }

            // প্রথম আর্গুমেন্ট হিসাবে সাব-কমান্ড চেক করা
            String subCommand = args[0];

            switch (subCommand) {
                case "start":
                    // "start" সাব-কমান্ডের জন্য অপশন পার্সিং
                    cmd = parser.parse(startOptions, args);
                    if (cmd.hasOption("h")) {
                        System.out.println("Help for start command");
                    } else {
                        System.out.println("Starting the service...");
                    }
                    break;

                case "stop":
                    // "stop" সাব-কমান্ডের জন্য অপশন পার্সিং
                    cmd = parser.parse(stopOptions, args);
                    if (cmd.hasOption("f")) {
                        System.out.println("Forcing stop...");
                    } else {
                        System.out.println("Stopping the service...");
                    }
                    break;

                case "status":
                    // "status" সাব-কমান্ডের জন্য অপশন পার্সিং
                    cmd = parser.parse(statusOptions, args);
                    if (cmd.hasOption("v")) {
                        System.out.println("Showing verbose status...");
                    } else {
                        System.out.println("Showing basic status...");
                    }
                    break;

                default:
                    System.out.println("Invalid sub-command: " + subCommand);
                    break;
            }

        } catch (ParseException e) {
            // ত্রুটি হলে সাহায্য মেসেজ প্রদর্শন
            System.err.println("Error: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("MultipleSubCommandsExample", globalOptions);
        }
    }
}

ব্যাখ্যা:

  1. Multiple Sub-commands: এখানে start, stop, এবং status সাব-কমান্ডের জন্য আলাদা আলাদা Options তৈরি করা হয়েছে। প্রতিটি সাব-কমান্ডের জন্য নির্দিষ্ট অপশন (যেমন help, force, verbose) নির্ধারণ করা হয়েছে।
  2. Sub-command Parsing: প্রথমে কমান্ডের প্রথম আর্গুমেন্ট হিসেবে একটি সাব-কমান্ড চেক করা হয় (যেমন start, stop, status) এবং তারপরে সংশ্লিষ্ট অপশনগুলোর পার্সিং করা হয়।
  3. HelpFormatter: যদি কোন ত্রুটি ঘটে বা ইউজার যদি কোনো ভুল সাব-কমান্ড দেয়, তবে HelpFormatter এর মাধ্যমে সাহায্য মেসেজ প্রদর্শিত হয়।
  4. Switch Statement: switch স্টেটমেন্ট ব্যবহার করে বিভিন্ন সাব-কমান্ডের জন্য আলাদা আলাদা কোড চালানো হয়।

আউটপুট:

  • যদি আপনি start সাব-কমান্ড ব্যবহার করেন:
java MultipleSubCommandsExample start

আউটপুট:

Starting the service...
  • যদি আপনি stop সাব-কমান্ড ব্যবহার করেন এবং -f অপশন প্রদান করেন:
java MultipleSubCommandsExample stop -f

আউটপুট:

Forcing stop...
  • যদি আপনি status সাব-কমান্ড ব্যবহার করেন এবং -v অপশন প্রদান করেন:
java MultipleSubCommandsExample status -v

আউটপুট:

Showing verbose status...
  • যদি আপনি ভুল সাব-কমান্ড প্রদান করেন:
java MultipleSubCommandsExample wrongCommand

আউটপুট:

Invalid sub-command: wrongCommand

৩. Sub-command এর জন্য Help এবং Validation

আপনি চাইলে Help এবং Validation এর জন্য অতিরিক্ত কাস্টমাইজেশনও করতে পারেন। উদাহরণস্বরূপ, যদি ইউজার start সাব-কমান্ডের জন্য সাহায্য চায়, তাহলে আপনাকে HelpFormatter ব্যবহার করতে হবে। পাশাপাশি, আপনি সাব-কমান্ডগুলির জন্য প্রয়োজনীয় validation প্রয়োগ করতে পারেন যাতে ইউজার ভুল আর্গুমেন্ট প্রদান না করে।

উদাহরণ:

Option helpOption = new Option("h", "help", false, "Show help for start");
startOptions.addOption(helpOption);

if (cmd.hasOption("h")) {
    HelpFormatter formatter = new HelpFormatter();
    formatter.printHelp("start", startOptions);
    return;
}

Apache Commons CLI এর মাধ্যমে Multiple Sub-commands হ্যান্ডল করা অত্যন্ত সহজ। আপনি আলাদা আলাদা সাব-কমান্ড এবং সেগুলির জন্য নির্দিষ্ট অপশন গঠন করতে পারেন এবং ইউজারের ইনপুট অনুযায়ী সেগুলিকে প্রোসেস করতে পারেন। এর মাধ্যমে আপনি শক্তিশালী এবং নমনীয় কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করতে পারবেন যেখানে বিভিন্ন কার্যক্রমের জন্য আলাদা সাব-কমান্ড ব্যবহৃত হবে।

  • OptionGroup ব্যবহার করে আপনি সাব-কমান্ডের মধ্যে অপশন গ্রুপ করতে পারেন।
  • HelpFormatter ব্যবহার করে ব্যবহারকারীদের সাহায্য মেসেজ প্রদান করতে পারেন।
  • CommandLineParser এবং Options ব্যবহার করে বিভিন্ন সাব-কমান্ডের জন্য আর্গুমেন্ট এবং অপশন পার্সিং করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...