Você já quis alterar rapidamente um repositório público para privado no GitHub sem precisar navegar pelas configurações? Este script em Node.js permite fazer isso diretamente pelo terminal, em apenas um clique!
Para contextualizar: fui contratado como professor de desenvolvimento de sistemas e, ao montar meus planos de aula, percebi que tinha muitos códigos e algoritmos no meu GitHub que seriam úteis durante as aulas. Como alguns alunos já estão me procurando nas redes sociais, percebi que deveria tornar meus repositórios importantes privados.
Quando comecei essa tarefa, achei que seria fácil, mas depois de 10 repositórios, ainda faltavam 53, kkkkk. Então, achei mais prudente resolver isso com um script simples, e foi isso que fiz.
Primeiro passo: Obter sua API token.
Acesse o link: https://github.com/settings/tokens
Você pode gerar um token, que será muito importante para termos acesso e modificar a visibilidade do repositório.
Você deve marcar a opção "repo".
Pronto! Agora que você tem a chave, vamos ao código:
const axios = require('axios');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
async function ask(query) {
return new Promise(resolve => rl.question(query, resolve));
}
async function getRepositories(username, token) {
try {
const response = await axios.get(`https://api.github.com/users/${username}/repos`, {
headers: { Authorization: `Bearer ${token}` }
});
return response.data.map(repo => repo.name);
} catch (error) {
console.error('Erro ao buscar repositórios');
return [];
}
}
async function visibility(username, token, repoName) {
try {
await axios.patch(`https://api.github.com/repos/${username}/${repoName}`,
{ private: true },
{ headers: { Authorization: `Bearer ${token}` } }
);
console.log(`O repositório ${repoName} foi privado`);
} catch (error) {
console.error('Erro ao alterar visibilidade');
}
}
async function main() {
const username = await ask('Nome de usuário do GitHub: ');
const token = await ask('Digite sua token: ');
const repos = await getRepositories(username, token);
if (repos.length === 0) {
console.log('Nenhum repositório encontrado');
rl.close();
return;
}
repos.forEach((repo, index) => console.log(`${index + 1}. ${repo}`));
const choice = await ask('\nDigite o número do repositório que deseja tornar privado: ');
const selectedRepo = repos[parseInt(choice) - 1];
if (selectedRepo) {
await visibility(username, token, selectedRepo);
} else {
console.log('Escolha inválida.');
}
rl.close();
}
main();
Resumo do Fluxo do Código
O usuário fornece seu nome de usuário e token do GitHub.
O script faz uma requisição para listar os repositórios do usuário.
O script exibe os repositórios disponíveis e pede ao usuário para escolher um.
O script altera a visibilidade do repositório escolhido, tornando-o privado.
O script exibe uma mensagem de confirmação ou erro dependendo do resultado.
Esse código usa axios para fazer as requisições HTTP e readline para interação com o usuário, criando uma solução simples, mas eficaz, para alterar rapidamente a visibilidade de múltiplos repositórios no GitHub.
Se esse código foi útil para você, deixe um comentário ou curta! Muito obrigado por ler até aqui.
Top comments (0)