@applicaster/zapplicaster-cli
Version:
CLI Tool for the zapp app and Quick Brick project
84 lines (65 loc) • 1.91 kB
JavaScript
const R = require("ramda");
const { resolve } = require("path");
const { inspect } = require("util");
const { writeJsonToFile } = require("../../file");
const logger = require("../../logger");
function enrichManifest({ manifest, packageJson }) {
const shouldEnrichManifest = packageJson.applicaster?.quickbrick?.min_version;
if (shouldEnrichManifest) {
return {
...manifest,
characteristics: {
...(manifest.characteristics || {}),
applicaster: { quickbrick: packageJson.applicaster.quickbrick },
},
};
}
return manifest;
}
function renderManifest({
manifestConfig,
packageJson,
pluginPath,
version,
dryRun,
}) {
return async function (platform) {
const manifest = manifestConfig({ platform, version });
const enrichedManifest = enrichManifest({ manifest, packageJson });
if (dryRun) {
logger.log("Running with --dry-run flag. Not writing manifests");
logger.log("manifest: ", inspect(enrichedManifest));
return true;
}
return writeJsonToFile(
`${pluginPath}/manifests/${platform}.json`,
enrichedManifest
);
};
}
async function generateManifest(configuration) {
const { pluginPath, platforms, version, dryRun } = configuration;
if (!platforms) {
logger.log("Manifest does not exsist, Skipping generation");
return true;
}
try {
const manifestConfig = require(
resolve(pluginPath, "manifests/manifest.config.js")
);
const packageJson = require(resolve(pluginPath, "package.json"));
const manifestRenderer = renderManifest({
manifestConfig,
pluginPath,
packageJson,
version,
dryRun,
});
return Promise.all(R.map(manifestRenderer, platforms));
} catch (e) {
throw new Error(
"An error occured when generating the manifest: " + e.message
);
}
}
module.exports = { generateManifest };