Complex Command Line Structures এবং Parsing

Advanced Option এবং Argument হ্যান্ডলিং - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

294

Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট প্রক্রিয়াকরণের জন্য একটি শক্তিশালী টুল, যা আপনাকে জটিল কমান্ড লাইন স্ট্রাকচার তৈরি এবং সেগুলি সহজে পার্স করতে সহায়তা করে। জটিল কমান্ড লাইন স্ট্রাকচার প্রায়ই একাধিক বিকল্প, আর্গুমেন্ট, সাব-কমান্ড, এবং অবস্থানগত আর্গুমেন্ট নিয়ে গঠিত হয়। Apache Commons CLI এই সমস্ত কিছুকে সঠিকভাবে ম্যানেজ করতে সক্ষম, এবং এটি কমান্ড লাইন ইনপুটকে সহজ ও কার্যকরীভাবে প্রক্রিয়া করতে সাহায্য করে।

এখানে আমরা Complex Command Line Structures এবং সেগুলির Parsing নিয়ে আলোচনা করব, যা আপনাকে একাধিক বিকল্প এবং সাব-কমান্ড নিয়ে কাজ করতে সহায়ক হবে।


Complex Command Line Structures

জটিল কমান্ড লাইন স্ট্রাকচার সাধারণত এই সমস্ত উপাদান নিয়ে গঠিত হতে পারে:

  • বিকল্প (Options): -h, --file, -v ইত্যাদি।
  • বাধ্যতামূলক আর্গুমেন্ট (Positional Arguments): যেমন ইনপুট ফাইল, আউটপুট ফাইল।
  • ঐচ্ছিক আর্গুমেন্ট (Optional Arguments): যেমন --verbose, --help
  • Sub-commands: যেমন add, remove, list ইত্যাদি।

অ্যাপাচি কমন্স সিআলআই ব্যবহার করে আপনি এই ধরনের জটিল স্ট্রাকচারগুলি কার্যকরভাবে ম্যানেজ করতে পারেন। নিচে এমন একটি উদাহরণ দেওয়া হল যেখানে একাধিক বিকল্প, পজিশনাল আর্গুমেন্ট, এবং সাব-কমান্ডগুলির মধ্যে সম্পর্ক প্রতিষ্ঠিত হচ্ছে।


উদাহরণ: Complex Command Line Structure

ধরা যাক আমরা একটি ফাইল ম্যানেজমেন্ট টুল তৈরি করছি যেখানে ব্যবহারকারী add, remove, অথবা list সাব-কমান্ডের মাধ্যমে ফাইল পরিচালনা করতে পারেন। এই কমান্ডে অনেক বিকল্প থাকবে যেমন -f (ফাইলের নাম), -v (ভের্বোজ মোড), -o (আউটপুট ফাইল), এবং --help (সহায়ক বার্তা)।

কোড উদাহরণ:

import org.apache.commons.cli.*;

public class ComplexCLIExample {
    public static void main(String[] args) {
        // বিকল্প তৈরি করা
        Options options = new Options();

        // --help বিকল্প
        Option helpOption = new Option("h", "help", false, "Show help");
        options.addOption(helpOption);

        // --verbose ফ্ল্যাগ
        Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
        options.addOption(verboseOption);

        // --file এবং --output বিকল্প
        Option fileOption = new Option("f", "file", true, "Input file");
        options.addOption(fileOption);
        
        Option outputOption = new Option("o", "output", true, "Output file");
        options.addOption(outputOption);

        // Sub-command: add, remove, list
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            cmd = parser.parse(options, args);

            // --help চেক করা
            if (cmd.hasOption("h")) {
                HelpFormatter formatter = new HelpFormatter();
                formatter.printHelp("ComplexCLIExample", options);
                return;
            }

            // --verbose ফ্ল্যাগ চেক করা
            if (cmd.hasOption("v")) {
                System.out.println("Verbose mode enabled");
            }

            // --file এবং --output আর্গুমেন্ট চেক করা
            if (cmd.hasOption("f")) {
                String file = cmd.getOptionValue("f");
                System.out.println("Input file: " + file);
            }

            if (cmd.hasOption("o")) {
                String outputFile = cmd.getOptionValue("o");
                System.out.println("Output file: " + outputFile);
            }

            // পজিশনাল আর্গুমেন্ট (sub-command) চেক করা
            if (args.length > 0) {
                String command = args[0];
                switch (command) {
                    case "add":
                        System.out.println("Adding file...");
                        break;
                    case "remove":
                        System.out.println("Removing file...");
                        break;
                    case "list":
                        System.out.println("Listing files...");
                        break;
                    default:
                        System.out.println("Unknown command: " + command);
                }
            }
        } catch (ParseException e) {
            System.out.println("Error parsing command line: " + e.getMessage());
            HelpFormatter formatter = new HelpFormatter();
            formatter.printHelp("ComplexCLIExample", options);
        }
    }
}

ব্যাখ্যা:

  1. Options তৈরি:
    • -f বা --file: ইনপুট ফাইলের জন্য আর্গুমেন্ট।
    • -o বা --output: আউটপুট ফাইলের জন্য আর্গুমেন্ট।
    • -v বা --verbose: ভের্বোজ মোড সক্রিয় করার জন্য ফ্ল্যাগ।
    • -h বা --help: সহায়ক বার্তা দেখানোর জন্য।
  2. Sub-commands:
    • কমান্ড লাইনে পজিশনাল আর্গুমেন্ট হিসেবে add, remove, এবং list সাব-কমান্ডগুলি চেক করা হয়।
  3. CommandLine Parsing:
    • CommandLineParser ক্লাসের মাধ্যমে args পার্স করা হয়।
    • তারপর কমান্ডের প্রথম আর্গুমেন্ট (যেমন add, remove, বা list) অনুযায়ী সাব-কমান্ডের জন্য এক্সিকিউট করা হয়।
  4. HelpFormatter:
    • --help ফ্ল্যাগ চেক করা হলে ব্যবহারকারীকে কমান্ডের সঠিক ব্যবহারের জন্য সহায়ক বার্তা প্রদর্শন করা হয়।

কমান্ড লাইনের উদাহরণ:

  1. ফাইল যোগ করা:

    java ComplexCLIExample add -f input.txt -o output.txt -v
    

    আউটপুট:

    Verbose mode enabled
    Input file: input.txt
    Output file: output.txt
    Adding file...
    
  2. ফাইল মুছে ফেলা:

    java ComplexCLIExample remove -f input.txt
    

    আউটপুট:

    Input file: input.txt
    Removing file...
    
  3. ফাইল তালিকা দেখানো:

    java ComplexCLIExample list -f input.txt
    

    আউটপুট:

    Input file: input.txt
    Listing files...
    
  4. সহায়ক বার্তা:

    java ComplexCLIExample -h
    

    আউটপুট:

    Usage: ComplexCLIExample [options]
    Options:
      -h, --help           Show help
      -v, --verbose        Enable verbose output
      -f, --file <file>    Input file
      -o, --output <file>  Output file
    

Sub-command Parsing এবং Validation এর সুবিধা

  1. নমনীয়তা: আপনি একাধিক সাব-কমান্ড এবং বিকল্প ব্যবহার করতে পারেন, যার ফলে আপনার কমান্ড লাইন অ্যাপ্লিকেশনটি বিভিন্ন কার্যক্রম পরিচালনা করতে সক্ষম হয়।
  2. ভুল ইনপুট প্রতিরোধ: সাব-কমান্ড এবং বিকল্পগুলির ভ্যালিডেশন খুব সহজে করা যায়, যা ভুল ইনপুট প্রক্রিয়া এবং অ্যাপ্লিকেশন ক্র্যাশের সম্ভাবনা কমায়।
  3. সহজ ইউজার ইন্টারফেস: কমান্ড লাইনে সাব-কমান্ড এবং বিকল্পগুলির ব্যবহার স্পষ্টভাবে সংজ্ঞায়িত করে, যা ব্যবহারকারীদের জন্য সহজ ও কার্যকরী করে তোলে।

Apache Commons CLI-তে Complex Command Line Structures এবং Parsing ব্যবস্থাপনা খুবই সহজ এবং নমনীয়। সাব-কমান্ড এবং বিকল্পগুলির ম্যানেজমেন্টের মাধ্যমে আপনি জটিল CLI অ্যাপ্লিকেশন তৈরি করতে পারেন। HelpFormatter এবং CommandLineParser এর মাধ্যমে কমান্ড লাইনের আর্গুমেন্ট এবং বিকল্পগুলির সঠিক প্রক্রিয়া নিশ্চিত করা সম্ভব। এই কৌশলগুলি ব্যবহার করে আপনি আরও শক্তিশালী এবং কার্যকরী কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...