jovo-cli
Version:
jovo command line tool (beta)
200 lines • 7.71 kB
JavaScript
;
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