Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tiagofrancafernandes/5d61d9853203d1b9087197d822d06030 to your computer and use it in GitHub Desktop.
Save tiagofrancafernandes/5d61d9853203d1b9087197d822d06030 to your computer and use it in GitHub Desktop.
dev-GitHub Snippets

O GitHub oferece uma API que permite gerenciar notificações e repositórios programaticamente. Combinando isso com um script em shell, você pode desativar notificações para repositórios favoritos diretamente pela CLI.


Script em Shell para Desativar Notificações de Repositórios Favoritos

  1. Gere um token de acesso pessoal (PAT) no GitHub com as permissões necessárias:

    • Vá para Settings > Developer Settings > Personal Access Tokens no GitHub.
    • Crie um token com escopos: repo e notifications.
  2. Use o script abaixo, substituindo <YOUR_GITHUB_TOKEN> pelo token gerado.

#!/bin/bash

# Configurações
GITHUB_USERNAME="<SEU_USUÁRIO_GITHUB>"
GITHUB_TOKEN="<SEU_TOKEN_DE_ACESSO>"

# URL base da API do GitHub
API_URL="https://api.github.com"

# Função para desativar notificações
disable_notifications() {
  local repo="$1"

  echo "Desativando notificações para o repositório: $repo"
  curl -s -X PATCH \
    -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/vnd.github+json" \
    "${API_URL}/repos/${GITHUB_USERNAME}/${repo}/subscription" \
    -d '{"ignored": true}'
}

# Obtendo repositórios favoritos
echo "Buscando repositórios favoritos..."
favorite_repos=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
  -H "Accept: application/vnd.github+json" \
  "${API_URL}/users/${GITHUB_USERNAME}/starred" | jq -r '.[].full_name')

if [ -z "$favorite_repos" ]; then
  echo "Nenhum repositório favorito encontrado."
  exit 0
fi

# Desativando notificações para cada repositório favorito
for repo in $favorite_repos; do
  disable_notifications "$repo"
done

echo "Notificações desativadas para todos os repositórios favoritos."

Como Usar

  1. Instale o jq:

    • No Ubuntu/Debian: sudo apt install jq
    • No macOS: brew install jq
  2. Execute o Script: Salve o script como disable_github_notifications.sh e torne-o executável:

    chmod +x disable_github_notifications.sh
    ./disable_github_notifications.sh

Como Funciona

  1. Busca Repositórios Favoritos: O endpoint /users/{username}/starred da API do GitHub retorna os repositórios marcados como favoritos.

  2. Desativa Notificações: Para cada repositório favorito, o script envia uma requisição PATCH para o endpoint /repos/{owner}/{repo}/subscription com o campo "ignored": true.

  3. Resultado: As notificações para os repositórios favoritos são desativadas.


Notas

  • Certifique-se de proteger o token (GITHUB_TOKEN), pois ele concede acesso à sua conta GitHub.
  • Se o número de repositórios for grande, o script pode precisar de paginação para listar todos (use parâmetros como ?per_page=100 na API).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment