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

Yürütüle bilirlik

Elixir’de yürütülebilir dosyalar oluşturmak için eskript kullanıyor olacağız. Escript, Erlang yüklü herhangi bir sistemde çalıştırılabilen bir yürütülebilir dosya üretir.

Table of Contents

Başlarken

Eskript ile bir yürütülebilir dosya oluşturmak için yapmamız gereken sadece ufak bir dosyayı oluşturup çalıştırmaktır: main/1 fonksiyonunu uygulayın ve Mixfile’ınızı güncelleyin.

Uygulanabilirliğimize giriş yapabilmek için bir modül oluşturarak başlayacağız. Ve bu, ana main/1 ’i uygulayacağımız yer şu şekilde örnek ile gösterilebilir:

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

Daha sonra, projemiz için :main_module atomunu belirtmekle birlikte :escript seçeneğini dahil etmek için Mixfile dosyanızı güncellemelisiniz:

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

Arg’ları Ayrıştırma

Uygulama kurulumumuzla, komut satırı argümanlarını ayrıştırmaya devam edebiliriz. Bunu yapmak için, değerin boolean olduğunu belirtmek gerekir ve Elixir’ için OptionParser.parse / 2 fonksiyonunu : switch seçeneği ile birlikte kullanacağız:

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

Oluşturma

Uygulamanızı eskript kullanmak için yapılandırdıktan hemen sonra, bizim çalıştırılabilir programımızı Mix ile birlikte aşağıdaki gibi kullanacağız.

mix escript.build

Hadi bir örnek ile yaptıklarımıza bakalım.

$ ./example_app --upcase Hello
HELLO

$ ./example_app Hi
Hi

Bu kadar. İlk çalışmamızı eskript kullanarak Elixir’de oluşturmuş olduk.

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