piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
78 lines • 4.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.newPiralDefaults = void 0;
exports.newPiral = newPiral;
const path_1 = require("path");
const helpers_1 = require("../helpers");
const types_1 = require("../types");
const common_1 = require("../common");
exports.newPiralDefaults = {
app: './src/index.html',
registry: common_1.config.registry,
framework: 'piral',
target: '.',
version: common_1.cliVersion,
forceOverwrite: common_1.ForceOverwrite.no,
language: common_1.config.language,
install: true,
template: 'default',
logLevel: types_1.LogLevels.info,
npmClient: undefined,
bundlerName: 'none',
variables: {},
name: undefined,
};
async function newPiral(baseDir = process.cwd(), options = {}) {
const { app = exports.newPiralDefaults.app, registry = exports.newPiralDefaults.registry, framework = exports.newPiralDefaults.framework, target = exports.newPiralDefaults.target, version = exports.newPiralDefaults.version, forceOverwrite = exports.newPiralDefaults.forceOverwrite, language = exports.newPiralDefaults.language, install = exports.newPiralDefaults.install, template = exports.newPiralDefaults.template, logLevel = exports.newPiralDefaults.logLevel, bundlerName = exports.newPiralDefaults.bundlerName, variables = exports.newPiralDefaults.variables, name = exports.newPiralDefaults.name, npmClient: defaultNpmClient = exports.newPiralDefaults.npmClient, } = options;
(0, common_1.ensure)('baseDir', baseDir, 'string');
(0, common_1.ensure)('framework', framework, 'string');
(0, common_1.ensure)('version', version, 'string');
(0, common_1.ensure)('target', target, 'string');
(0, common_1.ensure)('app', app, 'string');
(0, common_1.ensure)('template', template, 'string');
(0, common_1.ensure)('variables', variables, 'object');
const fullBase = (0, path_1.resolve)(process.cwd(), baseDir);
const root = (0, path_1.resolve)(fullBase, target);
if (!helpers_1.frameworkKeys.includes(framework)) {
(0, common_1.fail)('generalError_0002', `The "framework" value must be one of: ${helpers_1.frameworkKeys.join(', ')}`);
}
(0, common_1.setLogLevel)(logLevel);
(0, common_1.progress)('Preparing source and target ...');
const success = await (0, common_1.createDirectory)(root);
if (success) {
const npmClient = await (0, common_1.determineNpmClient)(root, defaultNpmClient);
const packageRef = (0, common_1.combinePackageRef)(framework, version, 'registry');
const projectName = name || (0, path_1.basename)(root);
(0, common_1.progress)(`Creating a new Piral instance in %s ...`, root);
await (0, common_1.createFileIfNotExists)(root, 'package.json', JSON.stringify({
name: projectName,
version: '1.0.0',
description: '',
keywords: ['piral'],
dependencies: {},
scripts: {},
}, undefined, 2));
await (0, common_1.initNpmProject)(npmClient, projectName, root);
if (registry !== exports.newPiralDefaults.registry) {
(0, common_1.progress)(`Setting up npm registry (%s) ...`, registry);
await (0, common_1.createFileIfNotExists)(root, '.npmrc', `registry=${registry}
always-auth=true`, forceOverwrite);
}
await (0, common_1.createFileIfNotExists)(root, common_1.piralJson, JSON.stringify({}, undefined, 2));
(0, common_1.progress)(`Installing npm package ${packageRef} ...`);
await (0, common_1.installNpmPackage)(npmClient, packageRef, root, '--save-exact');
(0, common_1.progress)(`Taking care of templating ...`);
const data = (0, common_1.getPiralScaffoldData)(language, root, app, framework, variables);
await (0, common_1.patchPiralPackage)(root, app, data, version, bundlerName);
await (0, common_1.scaffoldPiralSourceFiles)(template, registry, data, forceOverwrite);
if (install) {
(0, common_1.progress)(`Installing dependencies ...`);
await (0, common_1.installNpmDependencies)(npmClient, root);
}
(0, common_1.logDone)(`Piral instance scaffolded successfully!`);
}
else {
(0, common_1.fail)('cannotCreateDirectory_0044');
}
}
//# sourceMappingURL=new-piral.js.map