piral-cli
Version:
The standard CLI for creating and building a Piral instance or a Pilet.
64 lines • 2.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.installPiralInstance = installPiralInstance;
const log_1 = require("./log");
const constants_1 = require("./constants");
const io_1 = require("./io");
const website_1 = require("./website");
const npm_1 = require("./npm");
const npm_2 = require("./npm");
async function updatePiletJson(target, appName, appDetails) {
const oldContent = await (0, io_1.readJson)(target, constants_1.piletJson);
const newContent = {
...oldContent,
piralInstances: {
...oldContent.piralInstances,
[appName]: appDetails,
},
};
await (0, io_1.writeJson)(target, constants_1.piletJson, newContent, true);
await (0, io_1.updateExistingJson)(target, constants_1.packageJson, {
importmap: {
inherit: [appName],
},
});
}
async function setupPiralInstance(sourceName, type, hadVersion, rootDir, sourceVersion, npmClient) {
if (!(0, npm_2.isLinkedPackage)(sourceName, type, hadVersion, rootDir)) {
const packageRef = (0, npm_1.combinePackageRef)(sourceName, sourceVersion, type);
(0, log_1.progress)(`Installing npm package %s ...`, packageRef);
await (0, npm_2.installNpmPackage)(npmClient, packageRef, rootDir, '--save-dev', '--save-exact');
return await (0, npm_1.getPackageName)(rootDir, sourceName, type);
}
else {
(0, log_1.progress)(`Using locally available npm package %s ...`, sourceName);
const packageName = await (0, npm_1.getPackageName)(rootDir, sourceName, type);
const packageVersion = (0, npm_1.getPackageVersion)(hadVersion, sourceName, sourceVersion, type, rootDir);
await (0, io_1.updateExistingJson)(rootDir, constants_1.packageJson, {
devDependencies: {
[packageName]: packageVersion,
},
});
return packageName;
}
}
async function installPiralInstance(usedSource, baseDir, rootDir, npmClient, agent, selected) {
const [sourceName, sourceVersion, hadVersion, type] = await (0, npm_2.dissectPackageName)(baseDir, usedSource, npmClient);
if (type === 'remote') {
const emulator = await (0, website_1.scaffoldFromEmulatorWebsite)(rootDir, sourceName, agent);
const packageName = emulator.name;
await updatePiletJson(rootDir, packageName, {
selected,
url: sourceName,
});
return packageName;
}
else {
const packageName = await setupPiralInstance(sourceName, type, hadVersion, rootDir, sourceVersion, npmClient);
await updatePiletJson(rootDir, packageName, {
selected,
});
return packageName;
}
}
//# sourceMappingURL=shell.js.map