UNPKG

sepack

Version:

Simple cli tool for android project. Generate android project base on template kotlin mvvm, debug and install project without Android Studio.

223 lines 8.92 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Main = void 0; const command_1 = require("./command"); const prompter_1 = require("./prompter"); const shelljs_1 = __importDefault(require("shelljs")); const chalk_1 = __importDefault(require("chalk")); const model_1 = require("./model"); const utils_1 = require("./utils"); const ora_1 = __importDefault(require("ora")); const network_1 = require("./network"); const constant_1 = require("./constant"); const boxen_1 = __importDefault(require("boxen")); const yargs_1 = __importDefault(require("yargs")); const cli_clear_1 = __importDefault(require("cli-clear")); class Main { constructor() { } startArg() { return __awaiter(this, void 0, void 0, function* () { const command = new command_1.Command(); yargs_1.default.command(["create"], "Create project builder", () => __awaiter(this, void 0, void 0, function* () { yield this.startBuilder(); })).command(["build"], "Build android project", { sdk: { describe: 'Path android sdk', type: 'string', alias: 's', default: yield utils_1.sdkPath() }, checksdk: { describe: 'Check path of sdk', type: 'boolean', alias: 'c', default: false }, log: { describe: 'Show log', type: 'boolean', alias: 'l', default: false }, skiptest: { describe: 'Skip tests', type: 'boolean', alias: 'st', default: false } }, (arg) => __awaiter(this, void 0, void 0, function* () { if (arg.checksdk) { const sdk = yield utils_1.sdkPath(); console.log(`Sdk path: ${sdk}`); } else { const isShowLog = arg.log; const isSkipTest = arg.skiptest; yield command.buildProject(arg.sdk, isShowLog, isSkipTest); } })).command(["run"], "Run application", { resume: { describe: 'Resume, run with skip build and install', type: 'boolean', alias: 'r' }, log: { describe: 'Show log', type: 'boolean', alias: 'l', default: false }, tag: { describe: 'Filter tag', type: 'string', default: null, alias: 't' }, verbose: { describe: 'Verbose level', type: 'boolean', alias: 'v' }, debug: { describe: 'Debug level', type: 'boolean', alias: 'd' }, info: { describe: 'Info level', type: 'boolean', alias: 'i' }, warning: { describe: 'Warning level', type: 'boolean', alias: 'w' }, error: { describe: 'Error level', type: 'boolean', alias: 'e' }, }, (arg) => __awaiter(this, void 0, void 0, function* () { var _a; const isShowLog = arg.log; const isResume = arg.resume; const tag = (_a = arg.tag) !== null && _a !== void 0 ? _a : "*"; const isTagEnable = arg.tag != "*"; const isFilterVerbose = arg.verbose; const isFilterDebug = arg.debug; const isFilterInfo = arg.info; const isFilterWarning = arg.warning; const isFilterError = arg.error; var level; if (isFilterDebug) { level = "D"; } else if (isFilterInfo) { level = "I"; } else if (isFilterWarning) { level = "W"; } else if (isFilterError) { level = "E"; } else if (isFilterVerbose) { level = "V"; } else { level = "V"; } yield command.runApp(isResume, isShowLog); if (isTagEnable || isFilterVerbose || isFilterDebug || isFilterInfo || isFilterWarning || isFilterError) { setTimeout(() => { command.log(tag, level); }, 2000); } })).command(["init"], "Turn on sepack android project", () => __awaiter(this, void 0, void 0, function* () { yield command.init(); })).argv; }); } startBuilder() { return __awaiter(this, void 0, void 0, function* () { cli_clear_1.default(); utils_1.welcomeMessage(); if (!shelljs_1.default.which("git")) { utils_1.errorLine("Error: git not installed on your computer!"); } else { const spinnerBar = ora_1.default(); spinnerBar.text = chalk_1.default.green("Ping server..."); spinnerBar.color = "white"; spinnerBar.start(); try { const versionApi = yield network_1.getApiVersion(); const updater = new Updater(); spinnerBar.text = chalk_1.default.green("Checking update..."); const isUpdate = updater.isUpdate(); setTimeout(() => { spinnerBar.stop(); if (!isUpdate) { utils_1.outLog('Task', "Server connected!"); const templates = versionApi.templates; const sepackConfig = new model_1.SepackConfig(templates); const prompter = new prompter_1.Prompter(sepackConfig); prompter.startPromter(); } else { updater.notify(); } }, 1000); } catch (error) { spinnerBar.stop(); utils_1.errorLine("Server not connected!"); } } }); } } exports.Main = Main; class Updater { constructor() { const versionProc = shelljs_1.default.exec("npm view sepack version", { silent: true }); this.version = versionProc.stdout; } isUpdate() { const api = this.version.trim(); const current = constant_1.appVersion.replace("v", ""); const isCurrent = api === current; if (!isCurrent) { return api.localeCompare(current, undefined, { numeric: true }) === 1; } else { return false; } } notify() { const command = chalk_1.default.greenBright(`npm i -g sepack`); const updateVersionColor = chalk_1.default.greenBright(`v${this.version}`); const message = chalk_1.default.white(`Update available, please run "${command}" to update ${updateVersionColor}`); const box = boxen_1.default(message, { padding: 1, margin: 1, borderStyle: "round", borderColor: "green", }); console.log(box); } } //# sourceMappingURL=main.js.map