Do you want to pick up from where you left of?
Take me there

এক্সিকিউটেবল

এক্সিকিউটেবল তৈরি করার জন্যে আমরা ই-স্ক্রিপ্ট ব্যবহার করবো। এরল্যাং ইন্সটল করা থাকলেই, ই-স্ক্রিপ্ট দিয়ে তৈরি করা এক্সিকিউটেবল যেকোনো সিস্টেমে রান করা যায়।

ভূমিকা

ই-স্ক্রিপ্ট দিয়ে এক্সিকিউটেবল তৈরি করার জন্যে আমাদেরকে শুধুমাত্র কয়েকটা জিনিস করতে হবেঃ main/1 ফাংশন ইমপ্লিমেন্ট করা এবং মিক্সফাইল আপডেট করা। শুরুতে আমরা একটা মডিউল তৈরি করবো যেটা এক্সিকিউটেবল এর জন্যে এন্ট্রি পয়েন্ট হিসেবে কাজ করবে। এই মডিউলেই আমরা main/1 ফাংশনটি ইমপ্লিমেন্ট করবোঃ

defmodule ExampleApp.CLI do
  def main(args \\ []) do
    # Do stuff
  end
end

এর পরে, আমাদের কে মিক্সফাইল আপডেট করতে হবে যাতে, :main_module কোনটি তা বলে দিতে পারি এবং এর সাথে :escript অপশনটি যুক্ত করতে পারিঃ

defmodule ExampleApp.Mixproject do
  def project do
    [app: :example_app, version: "0.0.1", escript: escript()]
  end

  defp escript do
    [main_module: ExampleApp.CLI]
  end
end

পারসিং আর্গুমেন্ট

আমাদের এপ্লিকেশনতো সেটআপ করা হলো, এবার আমরা কমান্ড লাইন আর্গুমেন্ট কিভাবে পার্স করতে হয় তা দেখবো। এর জন্যে, আমরা এলিক্সির এর OptionParser.parse/2 ফাংশনটি ব্যবহার করবো এবং এর সাথে :switches অপশনটি যুক্ত করবো যাতে করে আমাদের ফ্ল্যাগ বুলিয়ান তা নির্দেশ করা যায়ঃ

defmodule ExampleApp.CLI do
  def main(args \\ []) do
    args
    |> parse_args()
    |> response()
    |> IO.puts()
  end

  defp parse_args(args) do
    {opts, word, _} =
      args
      |> OptionParser.parse(switches: [upcase: :boolean])

    {opts, List.to_string(word)}
  end

  defp response({opts, word}) do
    if opts[:upcase], do: String.upcase(word), else: word
  end
end

বিল্ডিং

এপ্লকিশেনকে ই-স্ক্রিপ্ট ব্যবহার করার জন্যে কনফিগার করে ফেললেই,মিক্স আমাদের এক্সিকিউটেবল বানানো খুবই সহজ ও আরামদায়ক করে দিবেঃ

mix escript.build

আসুন, এটা কে টেস্ট করে দেখা যাকঃ

$ ./example_app --upcase Hello
HELLO

$ ./example_app Hi
Hi

ব্যস এটুকুই! এরই সাথে, প্রথমবারের মতো আমাদের ই-স্ক্রিপ্ট ব্যবহার করে এলিক্সির এক্সিকিউটেবল তৈরি করা সমাপ্ত হলো।

Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!