rocket-git-task
Version:
Automação de fluxo de trabalho no Git para tasks, deploy e releases.
90 lines (79 loc) • 3.92 kB
JavaScript
#!/usr/bin/env node
const yargs = require('yargs');
const { hideBin } = require('yargs/helpers');
const { version } = require('../package.json');
const init = require('./commands/init');
const create = require('./commands/create');
const deploy = require('./commands/deploy');
const release = require('./commands/release');
const finish = require('./commands/finish');
const update = require('./commands/update');
const quickHomolog = require('./commands/quick-homolog');
const bkp = require('./commands/bkp');
yargs(hideBin(process.argv))
.usage(`
🚀 ROCKET GIT-TASK - Automação de Fluxo de Trabalho no Git
O Rocket Git-Task é uma ferramenta de automação para gerenciar tasks, deploys e releases no Git de forma simplificada.
📌 Autor: @tihhgoncalves
🔹 Uso: git-task <comando> [opções]
📌 Fluxo principal:
- Crie uma task: git-task create <nome>
- Crie um release: git-task release homolog|production
- Faça deploy da task para um release: git-task deploy <versão> (ex: git-task deploy 1.2.3-beta.1)
- Publique o release: git-task release publish (estando na branch release/<versão>)
📌 Comandos disponíveis:
- init Inicializa o Rocket Git-Task no repositório
- create Cria uma nova task no fluxo de desenvolvimento
- deploy Faz deploy da task para uma branch de release (ex: 1.2.3 ou 1.2.3-beta.1)
- release Cria um novo release ou publica um release já criado
- finish Finaliza uma task após o deploy
- update Atualiza a task com mudanças do develop
- bkp Cria um backup (ZIP) da task atual
`)
.command('init', '📌 Inicializa o Rocket Git-Task no repositório', () => {}, init)
.command('create <name>', '📌 Cria uma nova task no fluxo de desenvolvimento', (yargs) => {
yargs.positional('name', {
describe: 'Nome da task',
type: 'string'
});
}, create)
.command('deploy <target>', '📌 Faz deploy da task para uma branch de release (ex: 1.2.3 ou 1.2.3-beta.1)', (yargs) => {
yargs.positional('target', {
describe: 'Versão do release de destino (ex: 1.2.3 ou 1.2.3-beta.1)',
type: 'string'
});
}, deploy)
.command('release <target>', '📌 Cria um novo release ("homolog" ou "production") ou publica um release já criado ("publish")', (yargs) => {
yargs.positional('target', {
describe: 'Destino do release ("homolog", "production") para criar, ou "publish" para publicar o release atual',
type: 'string'
});
}, release)
.command('finish', '📌 Finaliza a task atual após o deploy', (yargs) => {
yargs.option('force', {
alias: 'f',
type: 'boolean',
description: 'Força a finalização da task sem verificar o merge'
});
}, finish)
.command('update', '📌 Atualiza a task atual com as mudanças do develop', () => {}, update)
.command('quick-homolog', '⚡ Cria release, faz deploy e publica para homologação em uma única operação', (yargs) => {
yargs.option('no-finish', {
alias: 'nf',
type: 'boolean',
description: 'Mantém a branch de release sem deletar (por padrão ela é deletada)'
});
}, quickHomolog)
.command('bkp', '📦 Cria um backup (ZIP) da task atual', () => {}, bkp)
.help()
.version(`🚀 Rocket Git-Task v${version}`)
.help()
.alias('h', 'help')
.alias('v', 'version')
.fail((msg, err, yargs) => {
if (err) throw err; // erros internos (ex: require errado) ainda devem quebrar
console.log('\n❌ ERRO DE COMANDO!\n\n', msg, '\n');
console.log(yargs.help());
process.exit(1);
})
.argv;