O documento discute a construção e distribuição de CLIs (interfaces de linha de comando) com Elixir, incluindo o uso de OptionParser para parsing de argumentos, Escript para scripts em Erlang, Rebar3 e Mix para compilação, e Bakeware para empacotamento em um único binário autocontido. Ele também aborda convenções de mensagens de commit em programação em par e distribuição do binário resultante.
5. ● Ideia de formar um grupo de estudos
replicável na comunidade
● Interesse em fomentar a prática de
programação em par
● Comparar a construção de um CLI em
Elixir com outras linguagens
● Conhecer melhor a linguagem
Como a ideia surgiu?
6. Programação em Par
● Prática adotada no Extreme
Programming (Kent Beck)
● Ótimo para processos de Onboarding
● Melhora Code Review
● Funciona remotamente?
● Como atribuir o trabalho realizado em
par?
9. OptionParser
● Funções de parsing para argumentos da command line
● Disponível na standard library
● Não segue todas as recomendações de convenções de command line
options do POSIX
11. Escript (Erlang Script)
● Ferramenta para escrever e executar scripts usando Erlang
● Você pode embedar OTP e dependências dentro do seu escript
● Pode ser interpretado, compilado para byte code, ou para código
nativo
13. Rebar3
● Basicamente o "Mix" para ambientes Erlang
● Mix utiliza Rebar3 para compilar dependências que usem Erlang
● Com Rebar3 podemos compilar o escript do erlang
14. Mix Release
● Lançado no Elixir v1.9
● Distillery?
● Gera um release auto-contido para realizar deploy/empacotamento em
alguma instância
● Opções include_erts e strip_beams
15. Bakeware
● Sem dependências de runtime
● Único binário (e só?)
● Cross-compilation?
● Integra com o mix release
24. Próximos passos
● Melhorar documentação (hexdocs)
● Adotar o Bakeware para disponibilizar
binários nos releases
● Identificar source provider (GitHub ou GitLab,
etc) ao executar git pair add
● Impedir duplicações do `Co-authored-by`
nos amends
● Melhorar output com cores e emojis 🤩
○ Incentivado pelo Convetional Commits
26. Referências
● Projeto `git-pair`
● Commit Message Conventions
● Elixir: OptionParser
● GNU extensions to the POSIX recommendations for command-line options
● Mix.Tasks.Release
● Rebar3: escriptize
● Erlang: escript
27. Mais Referências
● makeself - Make self-extractable archives on Unix
● Zstandard, or zstd as short version, is a fast lossless compression
algorithm
● [Question] How to make a "escript" file to a binary executable?
● Elixir 1.9 Release notes - Releases
● Geoff Cant - Escript changes the game
● Bakeware
● Spawnfest