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

Fichier exécutable

Pour construire un fichier exécutable avec Elixir, nous utilisons escript. Escript produit un fichier qui peut être exécuté sur n’importe quel système disposant d’une installation Erlang.

Démarrage

Pour créer un fichier exécutable avec escript, peu de choses est requis : nous devons implémenter une fonction main/1 et mettre à jour le Mixfile.

Créons un module. Il doit contenir une fonction main/1 :

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

Ensuite, nous devons ajouter l’option :escript dans Mixfile, pour indiquer le point d’entrée du fichier exécutable (via :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

Analyse des arguments

Le fichier peut être exécuté avec des arguments supplémentaires. Pour analyser ces arguments, nous pouvons utiliser OptionParser.parse/2.

Dans l’exemple ci-suit, nous utilisons l’option :switches pour indiquer que l’argument que nous attendons, --upcase, est un booléen (true s’il est trouvé, false sinon).

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

Construction du fichier exécutable

Une fois l’application configurée avec escript, nous pouvons construire le fichier exécutable avec mix :

mix escript.build

Reste à l’utiliser :

$ ./example_app --upcase Hello
HELLO

$ ./example_app Hi
Hi
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!