Esse é um alias para rodar o formatter/credo/testes no elixir e realizar o commit automaticamente (com coautores)
Esse script requer 🎀 gum!
Você deve colocar as funções abaixo no seu .zshrc
para usar o mixes
:
coauthors_path="$HOME/.config/coauthors"
function coauthors() {
if [[ $1 = "fetch" ]]; then
git shortlog -sce | cut -c8-
elif [[ $1 = "list" ]]; then
cat $coauthors_path | grep --invert-match "^ *#\|^$"
elif [[ $1 = "select" ]]; then
authors=$(echo "Don't add coauthors\n$(coauthors list)" | gum choose --no-limit)
if [[ $authors = "Don't add coauthors" ]]; then
echo ""
else
echo "\n\n$authors"
fi
else
bash -c "${$(git config --global core.editor):-vi} $coauthors_path"
fi
}
function mixes() (
trap 'return 1' INT
msg=$1
mix format && mix format --check-formatted && mix credo --strict && mix test
if [ $? = 0 ] && [[ $1 != "" ]]; then
coauthors=$(coauthors select)
git add .
git commit -m "$msg$coauthors"
fi
)
Você pode passar uma mensagem para o mixes caso queira realizar um commit logo após obter sucesso no formatter, credo e nos testes da app (o comando irá adicionar os coautores automaticamente).
USAGE:
mixes [commit message] [opts]
EXAMPLES:
mixes
mixes "feat: add users route to router.exs"
mixes "fix: apply suggestions" --no-coauthors
mixes "initial commit" -n
O arquivo de coautores contem os usuários que serão adicionados ao commit automaticamente, ao rodar o comando abaixo abre o arquivo de coautores definido em $coauthors_path
no seu editor padrão do git.
USAGE:
coauthors [command]
COMMANDS:
Abre o arquivo de coautores para edição
fetch Exibe todos os coautores da branch atual
list Lista os coautores definidos no $coauthors_path
select Seleciona múltiplos coautores da lista
EXAMPLES:
coauthors
coauthors fetch
coauthors list
coauthors select
git commit -m "feat: new stuff $(coauthors select)"
Também é possível filtrar comentários e quebras de linha:
# Co-authored-by: NOME <EMAIL>
Co-authored-by: Pessoa Um <[email protected]>
# Co-authored-by: Pessoa Dois <[email protected]>
Co-authored-by: Pessoa Três <[email protected]>