Executables
Untuk membuat eksekutabel di Elixir kita akan menggunakan escript. Escript menghasilkan sebuah eksekutabel yang bisa dijalankan pada sistem apapun yang sudah diinstali Erlang.
Memulai
Untuk membuat sebuah eksekutabel dengan escript hanya ada beberapa hal yang kita perlu lakukan: implementasi sebuah fungsi main/1 dan mengubah Mixfile kita.
Kita akan mulai dengan membuat sebuah modul untuk menjadi titik masuk (entry point) ke eksekutabel kita.  Inilah tempat kita mengimplementasi main/1:
defmodule ExampleApp.CLI do
  def main(args \\ []) do
    # Do stuff
  end
end
Kemudian kita perlu mengubah Mixfile kita untuk memasukkan opsi :escript ke project kita bersama dengan menspesifikasikan :main_module kita:
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
endMemparse Argumen
Dengan aplikasi kita siap, kita dapat lanjut ke memparse argumen dari command line.  Untuk melakukan ini kita akan gunakan OptionParser.parse/2 dari Elixir dengan opsi :switches untuk mengindikasikan bahwa flag kita adalah boolean:
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, "Hello"}), do: response({opts, "World"})
  defp response({opts, word}) do
    if opts[:upcase], do: String.upcase(word), else: word
  end
endMembuild
Sesudah kita selesai mengkonfigurasi aplikasi kita untuk menggunakan escript, membuild eksekutabel kita adalah mudah dengan Mix:
mix escript.buildLet’s take it for a spin:
$ ./example_app --upcase Hello
WORLD
$ ./example_app Hi
HiSelesai. Kita sudah membuat eksekutabel pertama kita menggunakan escript.
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!