squad-deploy-cli
Version:
120 lines (102 loc) • 3.47 kB
JavaScript
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());
}