const { exec } = require('child_process');

// Função para executar comandos shell
const runCommand = (command) => {
  return new Promise((resolve, reject) => {
    exec(command, (error, stdout, stderr) => {
      if (error) {
        console.error(`Erro ao executar o comando: ${command}`);
        console.error(stderr);
        reject(error);
      } else {
        console.log(stdout);
        resolve();
      }
    });
  });
};

// Script principal
async function deployPatch(version) {
  try {
    if(!version){
        throw new Error('Versão inválida (patch ou minor)');
    }
    // Publica no NPM
    await runCommand(`npm version ${version}`);
    await runCommand('npm publish --access public');

    // Envia a tag para o GitHub
    await runCommand('git push origin --tags');
    await runCommand('git push origin');
  } catch (error) {
    console.error('Falha na implantação:', error);
    await runCommand('git checkout -- .');

    process.exit(1);
  }
}
const gitRemote = process.argv[2];

deployPatch(gitRemote);
