Skip to content

Instantly share code, notes, and snippets.

@MateusAquino
Last active August 6, 2022 14:48
Show Gist options
  • Save MateusAquino/ecea63a6baf03741036871dea8f1b829 to your computer and use it in GitHub Desktop.
Save MateusAquino/ecea63a6baf03741036871dea8f1b829 to your computer and use it in GitHub Desktop.

Elixir Logo Mixes & Coauthors

Esse é um alias para rodar o formatter/credo/testes no elixir e realizar o commit automaticamente (com coautores) :thumbsup-parrot:

Requisitos

Esse script requer 🎀 gum!

Funções

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
)

Mixes

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

Coauthors

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)"

Exemplo de arquivo coauthors

Também é possível filtrar comentários e quebras de linha:

# Co-authored-by: NOME <EMAIL>

Co-authored-by: Pessoa Um <autor1@gmail.com>
# Co-authored-by: Pessoa Dois <autor2@users.noreply.github.com>
Co-authored-by: Pessoa Três <autor3@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment