UNPKG

jovo-cli

Version:
200 lines 7.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const command_1 = require("@oclif/command"); const chalk_1 = __importDefault(require("chalk")); const elegant_spinner_1 = __importDefault(require("elegant-spinner")); const fs_1 = require("fs"); const jovo_cli_core_1 = require("jovo-cli-core"); const latest_version_1 = __importDefault(require("latest-version")); const log_symbols_1 = __importDefault(require("log-symbols")); const path_1 = require("path"); const deployTargets = __importStar(require("./DeployTargets")); exports.deployTargets = deployTargets; const platforms = __importStar(require("./Platforms")); exports.platforms = platforms; const prompts = __importStar(require("./Prompts")); exports.prompts = prompts; const scaffolder = __importStar(require("./Scaffolder")); exports.scaffolder = scaffolder; const tasks = __importStar(require("./Tasks")); exports.tasks = tasks; const validators = __importStar(require("./Validators")); exports.validators = validators; var JovoCliRenderer_1 = require("./JovoCliRenderer"); exports.JovoCliRenderer = JovoCliRenderer_1.JovoCliRenderer; const project = jovo_cli_core_1.getProject(); const pointer = chalk_1.default.yellow('>'); function isDefined(x) { return x !== null && x !== undefined; } exports.isDefined = isDefined; function getSymbol(task, options) { if (!task.spinner) { task.spinner = elegant_spinner_1.default(); } if (task.isPending()) { return options.showSubtasks !== false && task.subtasks.length > 0 ? pointer : chalk_1.default.yellow(task.spinner()); } if (task.isCompleted()) { return log_symbols_1.default.success; } if (task.hasFailed()) { return task.subtasks.length > 0 ? pointer : log_symbols_1.default.error; } if (task.isSkipped()) { return log_symbols_1.default.success; } return ' '; } exports.getSymbol = getSymbol; function addBaseCliOptions(options) { options.debug = command_1.flags.boolean({ description: 'Displays additional debugging information', }); } exports.addBaseCliOptions = addBaseCliOptions; function deleteFolderRecursive(path) { if (fs_1.existsSync(path)) { for (const file of fs_1.readdirSync(path)) { const curPath = path_1.join(path, file); if (fs_1.lstatSync(curPath).isDirectory()) { deleteFolderRecursive(curPath); } else { fs_1.unlinkSync(curPath); } } fs_1.rmdirSync(path); } } exports.deleteFolderRecursive = deleteFolderRecursive; async function getPackages(packageRegex) { const projectPath = project.getProjectPath(); let packageFileName = ''; if (fs_1.existsSync(path_1.join(projectPath, 'package-lock.json'))) { packageFileName = 'package-lock.json'; } else if (fs_1.existsSync(path_1.join(projectPath, 'package.json'))) { packageFileName = 'package.json'; } else { throw new jovo_cli_core_1.JovoCliError("Could not find an NPM dependency file, such as your project's package.json.", 'jovo-cli'); } const packagePath = path_1.join(projectPath, packageFileName); let content; try { content = fs_1.readFileSync(packagePath).toString(); } catch (e) { throw new jovo_cli_core_1.JovoCliError(`Something went wrong while reading your ${packageFileName} file.`, 'jovo-cli'); } const packageFile = JSON.parse(content); const packages = {}; const versionNumberRegex = /^\^?\d{1,2}\.\d{1,2}\.\d{1,2}$/; for (const [dependencyKey, dependency] of Object.entries(packageFile.devDependencies || {})) { if (packageRegex && !dependencyKey.match(packageRegex)) { continue; } if (dependency.match(versionNumberRegex)) { packages[dependencyKey] = { dev: true, inPackageJson: false, version: dependency.replace('^', ''), }; } } for (const [dependencyKey, dependency] of Object.entries(packageFile.dependencies)) { if (packageRegex && !dependencyKey.match(packageRegex)) { continue; } if (typeof dependency === 'string') { if (dependency.match(versionNumberRegex)) { packages[dependencyKey] = { dev: false, inPackageJson: false, version: dependency.replace('^', ''), }; } } if (typeof dependency === 'object') { if (dependency.version.match(versionNumberRegex)) { packages[dependencyKey] = { dev: !!dependency.dev, inPackageJson: false, version: dependency.version.replace('^', ''), }; } } } if (fs_1.existsSync(path_1.join(projectPath, 'package.json'))) { try { content = fs_1.readFileSync(path_1.join(projectPath, 'package.json')).toString(); const packageJsonFileContent = JSON.parse(content); Object.keys(packageJsonFileContent.dependencies || {}).forEach((key) => { if (packages[key]) { packages[key].inPackageJson = true; } }); Object.keys(packageJsonFileContent.devDependencies || {}).forEach((key) => { if (packages[key]) { packages[key].inPackageJson = true; } }); } catch (e) { throw new jovo_cli_core_1.JovoCliError(`Something went wrong while reading your ${packageFileName} file.`, 'jovo-cli'); } } return packages; } exports.getPackages = getPackages; async function getPackageVersionsNpm(packageRegex) { const packages = await getPackages(packageRegex); const queryPromises = {}; for (const packageName of Object.keys(packages)) { queryPromises[packageName] = latest_version_1.default(packageName); } const returnPackages = {}; for (const packageName of Object.keys(packages)) { returnPackages[packageName] = { dev: packages[packageName].dev, inPackageJson: packages[packageName].inPackageJson, local: packages[packageName].version, npm: await queryPromises[packageName], }; } return returnPackages; } exports.getPackageVersionsNpm = getPackageVersionsNpm; function shouldDisplayUpdateMessage(hours) { const jovoConfig = project.loadJovoUserConfig(); if (!jovoConfig.hasOwnProperty('timeLastUpdateMessage')) { return true; } const nextDisplayTime = new Date(jovoConfig.timeLastUpdateMessage).getTime() + 1000 * 60 * 60 * hours; if (new Date().getTime() < nextDisplayTime) { return false; } return true; } exports.shouldDisplayUpdateMessage = shouldDisplayUpdateMessage; function setUpdateMessageDisplayed() { const jovoConfig = project.loadJovoUserConfig(); jovoConfig.timeLastUpdateMessage = new Date().toISOString(); project.saveJovoUserConfig(jovoConfig); } exports.setUpdateMessageDisplayed = setUpdateMessageDisplayed; //# sourceMappingURL=index.js.map