UNPKG

piral-cli

Version:

The standard CLI for creating and building a Piral instance or a Pilet.

110 lines 6.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.newPiletDefaults = void 0; exports.newPilet = newPilet; const path_1 = require("path"); const types_1 = require("../types"); const common_1 = require("../common"); exports.newPiletDefaults = { target: '.', registry: common_1.config.registry, source: undefined, forceOverwrite: common_1.ForceOverwrite.no, language: common_1.config.language, install: true, template: undefined, logLevel: types_1.LogLevels.info, npmClient: undefined, bundlerName: 'none', variables: {}, name: undefined, cert: undefined, allowSelfSigned: common_1.config.allowSelfSigned, }; async function newPilet(baseDir = process.cwd(), options = {}) { const { target = exports.newPiletDefaults.target, registry = exports.newPiletDefaults.registry, source = exports.newPiletDefaults.source, forceOverwrite = exports.newPiletDefaults.forceOverwrite, language = exports.newPiletDefaults.language, install = exports.newPiletDefaults.install, template = exports.newPiletDefaults.template, logLevel = exports.newPiletDefaults.logLevel, bundlerName = exports.newPiletDefaults.bundlerName, variables = exports.newPiletDefaults.variables, npmClient: defaultNpmClient = exports.newPiletDefaults.npmClient, name = exports.newPiletDefaults.name, cert = exports.newPiletDefaults.cert, allowSelfSigned = exports.newPiletDefaults.allowSelfSigned, } = options; (0, common_1.ensure)('baseDir', baseDir, 'string'); (0, common_1.ensure)('source', source, 'string'); (0, common_1.ensure)('target', target, 'string'); (0, common_1.ensure)('template', template, ['string', 'undefined']); (0, common_1.ensure)('variables', variables, 'object'); const fullBase = (0, path_1.resolve)(process.cwd(), baseDir); const root = (0, path_1.resolve)(fullBase, target); (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 ca = await (0, common_1.getCertificate)(cert); const agent = (0, common_1.getAgent)({ ca, allowSelfSigned }); const projectName = name || (0, path_1.basename)(root); (0, common_1.progress)(`Scaffolding new pilet in %s ...`, root); await (0, common_1.createFileIfNotExists)(root, 'package.json', JSON.stringify({ name: projectName, version: '1.0.0', description: '', keywords: ['pilet'], dependencies: {}, devDependencies: {}, peerDependencies: {}, scripts: {}, main: 'dist/index.js', types: 'dist/index.d.ts', files: ['dist'], }, undefined, 2)); await (0, common_1.initNpmProject)(npmClient, projectName, root); if (registry !== exports.newPiletDefaults.registry) { (0, common_1.progress)(`Setting up npm registry (%s) ...`, registry); await (0, common_1.createFileIfNotExists)(root, '.npmrc', `registry=${registry}\n`, forceOverwrite); } await (0, common_1.createFileIfNotExists)(root, common_1.piletJson, JSON.stringify({ $schema: common_1.piletJsonSchemaUrl, schemaVersion: common_1.defaultSchemaVersion, importmapVersions: common_1.defaultImportmapVersions, remoteTypesTarget: common_1.defaultRemoteTypesTarget, piralInstances: {}, }, undefined, 2)); const sourceName = source || `empty-piral@${common_1.cliVersion}`; const packageName = await (0, common_1.installPiralInstance)(sourceName, fullBase, root, npmClient, agent, true); const piralInfo = await (0, common_1.readPiralPackage)(root, packageName); const isEmulator = (0, common_1.checkAppShellPackage)(piralInfo); const { preScaffold, postScaffold, files, template: preSelectedTemplate } = (0, common_1.getPiletsInfo)(piralInfo); if (preScaffold) { (0, common_1.progress)(`Running preScaffold script ...`); (0, common_1.log)('generalDebug_0003', `Run: ${preScaffold}`); await (0, common_1.runScript)(preScaffold, root); } (0, common_1.progress)(`Taking care of templating ...`); const data = (0, common_1.getPiletScaffoldData)(language, root, packageName, variables); await (0, common_1.patchPiletPackage)(root, piralInfo, isEmulator, npmClient, { language, bundler: bundlerName, }); const chosenTemplate = template || preSelectedTemplate || 'default'; await (0, common_1.scaffoldPiletSourceFiles)(chosenTemplate, registry, data, forceOverwrite); if (isEmulator) { // in the emulator case we get the files (and files_once) from the contained tarballs await (0, common_1.copyPiralFiles)(root, packageName, piralInfo, common_1.ForceOverwrite.yes, data); } else { // otherwise, we perform the same action as in the emulator creation // just with a different target; not a created directory, but the root const packageRoot = (0, common_1.getPiralPath)(root, packageName); await (0, common_1.copyScaffoldingFiles)(packageRoot, root, files, piralInfo, data); } if (install) { (0, common_1.progress)(`Installing dependencies ...`); await (0, common_1.installNpmDependencies)(npmClient, root); } if (postScaffold) { (0, common_1.progress)(`Running postScaffold script ...`); (0, common_1.log)('generalDebug_0003', `Run: ${postScaffold}`); await (0, common_1.runScript)(postScaffold, root); } (0, common_1.logDone)(`Pilet scaffolded successfully!`); } else { (0, common_1.fail)('cannotCreateDirectory_0044'); } } //# sourceMappingURL=new-pilet.js.map