UNPKG

squad-deploy-cli

Version:

120 lines (102 loc) 3.47 kB
const inquirer = require("inquirer"); const chalk = require("chalk"); const fs = require("fs"); const messages = require("./messages"); const animations = require("./animations"); const { exec } = require("child_process"); const Table = require("cli-table"); module.exports = { build: async function build(type, options) { let loader = animations.loading(messages.squad("Fazendo o build...")); if (type === "desktop") { loader.start(); exec("dependencies.sh", (error, stdout, stderr) => { if (error) { loader.stop(); console.log(messages.error("\n[ERR]: " + error)); return; } if (stderr) { loader.stop(); console.log(messages.warning("\n[WARN]: " + stderr)); } loader.stop(); runBuild(options); }); } else { console.log(messages.error("❗ Comando não existente.")); } } }; function run(command, callback = 0) { const clock = animations.running(` Rodando: ${command}`); clock.start(); exec(command, (error, stdout, stderr) => { if (error) { console.log(messages.error("[❗]" + error)); } if (stderr) { console.log(messages.warning("[✖]" + stderr)); } console.log(messages.success(`✔️ Ok`)); if(callback !== 0){ clock.stop(); callback(); } }); } async function runBuild(options){ showOptionsSO(); answers = await inquirer.prompt([ { type: "input", name: "desktop", message: "Escolha um Sistema Operacional:", validate: value => value == 0 || value == 1 || value == 2 ? true : "Por favor, selecione um SO válido!" } ]); if (answers.desktop == 0) { buildSO("--win", () => { console.log(messages.success(`\n✔️ Buildado para o Windows com sucesso!`)); console.log(messages.success(`\nArquivo gerado na pasta '/dist'!`)) }); } else if (answers.desktop == 1) { buildSO("--lin", () => { console.log(messages.success(`\n✔️ Buildado para o Linux com sucesso!`)); console.log(messages.success(`\nArquivo gerado na pasta '/dist'!`)) }); } else if (answers.desktop == 2) { buildSO("--mac", () => { console.log(messages.success(`\n✔️ Buildado para o Mac com sucesso!`)); console.log(messages.success(`\nArquivo gerado na pasta '/dist'!`)) }); } if (options.upgrade) { if (options.upgrade === "fix") { run("grunt bump"); } else if (options.upgrade === "minor") { run("grunt bump:minor"); } else if (options.upgrade === "major") { run("grunt bump:major"); } else { console.log(messages.error("❗ Flag não existente, use squad --help.")); } } } function buildSO(so, callback){ run(`npm run build && electron-builder ${so} -c.extraMetadata.main=build/electron.js --publish always`, callback); } function showOptionsSO() { const so = ["Windows", "Linux", "MacOS"]; const table = new Table({ head: ["opção", "sistema operacional"], colWidths: [10, 20] }); so.map((index, data) => { table.push([data, index]); }); console.log(table.toString()); }