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

Executáveis

Para criar executáveis em Elixir nós utilizaremos escript. Escript produz um executável que pode rodar em qualquer sistema que tenha Erlang instalado.

Começando

Para criar um executável com escript há poucas coisas que precisamos fazer: implementar uma função main/1 e atualizar nosso Mixfile.

Vamos começar criando um módulo que servirá como ponto de entrada para nosso executável, é aí que vamos implementar main/1:

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

A seguir nós precisamos atualizar nosso Mixfile incluindo a opção :escript para nosso projeto além de especificar nosso :main_module:

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

Fazendo Parsing dos Argumentos

Com nossa aplicação configurada podemos começar a parsear os argumentos da linha de comando. Para fazer isso vamos utilizar a função OptionParser.parse/2 do Elixir e a opção :switches para indicar que nossa flag é booleana.

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

Criando o Executável

Quando terminamos de configurar nossa aplicação para usar escript, criar o executável é muito simples usando Mix:

mix escript.build

Vamos testar:

$ ./example_app --upcase Hello
HELLO

$ ./example_app Hi
Hi

É isso. Nós fizemos nosso primeiro executável em Elixir usando escript.

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