Adaptei de um script em shell que tinha feito
Nunca tinha usado exec e Promise
Inseri o código no cht GPT e pedi para ele comentar cada linha de código com uma explicação
Roda no terminl via node
Colocar na pasta que quer enviar para o github
const readline = require("readline"); // Módulo para perguntar ao usuário no terminal
const { exec } = require("child_process"); // Para rodar comandos git no sistema
const { promisify } = require("util"); // Para transformar exec em Promise
// Transforma exec para usar async/await (mais fácil)
const execAsync = promisify(exec);
// Criamos a interface para ler textos do usuário
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// Função para perguntar ao usuário (versão Promises)
function perguntar(texto) {
return new Promise(resolve => {
rl.question(texto, resposta => resolve(resposta));
});
}
async function main() {
try {
console.log("\n=== CONFIGURAR GIT AUTOMATICAMENTE ===\n");
// Pergunta o nome do commit inicial
const CM = await perguntar("Nome do commit inicial: ");
// Pergunta a URL SSH do repositório
const URL = await perguntar("URL SSH do repositório (ex: git@github.com:usuario/repo.git): ");
// Pergunta o caminho da chave SSH
const KEY = await perguntar("Caminho da chave SSH (ex: ~/.ssh/id_rsa): ");
console.log("\nExecutando comandos Git...\n");
// Executa os comandos do shell script
await execAsync("git init");
await execAsync("git add .");
await execAsync(`git commit -m "${CM}"`);
await execAsync(`git remote add origin ${URL}`);
console.log("Configurando chave SSH...");
await execAsync(`ssh-add ${KEY}`);
console.log("\nEnviando para o GitHub...");
await execAsync("git push -u origin main");
console.log("\nRepositório configurado com sucesso!");
} catch (err) {
console.error("\nERRO:", err.message);
} finally {
rl.close(); // Fecha a entrada do usuário
}
}
main();