Uruchamianie programów
Do stworzenia pliku wykonywalnego w Elixirze służy escript. Escript generuje plik wykonywalny, który może zostać uruchomiony na każdym komputerze z zainstalowanym Erlangiem.
Na początek
Do utworzenia pliku, który można uruchomić za pomocą escriptu, potrzebujemy zrobić tylko kilka drobnych rzeczy: zaimplementować funkcję main/1
oraz zaktualizować konfigurację Mixa.
Zaczniemy od stworzenia modułu, który będzie punktem startowym programu.
To w nim zaimplementujemy funkcję main/1
:
defmodule ExampleApp.CLI do
def main(args \\ []) do
# Rób swoje rzeczy
end
end
Następnie potrzebujemy zaktualizować nasz Mixfile, by zawierał opcję :escript
oraz wskazywał główny moduł — :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
Parsowanie argumentów
Kiedy nasza aplikacja jest już skonfigurowana, możemy przejść do przetwarzania argumentów z wiersza poleceń.
By to zrobić, użyjemy Elixirowego modułu OptionParser.parse/2
z opcją :switches
, by wskazać, że nasza flaga jest zmienną typu logicznego:
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
Budowanie plików wykonywalnych
Kiedy już skonfigurujemy aplikację tak, by używała escriptu, stworzenie pliku wykonywalnego z Mixem jest banalne:
mix escript.build
Zobaczmy jak to działa:
$ ./example_app --upcase Hello
HELLO
$ ./example_app Hi
Hi
I to wszystko! Właśnie stworzyliśmy nasz pierwszy program z użyciem escriptu.
Caught a mistake or want to contribute to the lesson? Edit this lesson on GitHub!