@platform/cell.tmpl
Version:
Template generator for CellOS.
51 lines (50 loc) • 1.7 kB
JavaScript
import { fs, npm } from '../common';
export function saveFile(args = {}) {
return async (req, res) => {
const { rename = [] } = args;
const { dir } = req.variables;
let target = fs.join(dir, req.path.target);
rename
.filter((item) => target.endsWith(item.from))
.forEach((item) => {
target = target.substr(0, target.length - item.from.length);
target += item.to;
});
const message = `saving: ${target}`;
res.alert({ message });
await fs.ensureDir(fs.dirname(target));
await fs.writeFile(target, req.buffer);
res.done(args.done);
};
}
export function replaceText(args = {}) {
return (req, res) => {
res.replaceText(/__NAME__/g, req.variables.name);
res.done(args.done);
};
}
export function npmInstall(args = {}) {
return async (req, res) => {
const { dir } = req.variables;
const message = `installing modules...🌼`;
res.alert({ message });
await npm.install({ dir });
res.done(args.done);
};
}
export function processPackage(args) {
return async (req, res) => {
if (!req.path.source.endsWith(args.filename)) {
return res.next();
}
res.alert({ message: `Retrieving latest version information...` });
const pkg = npm.pkg({ json: JSON.parse(req.text || '') });
await pkg.updateVersions({
filter: (name, version) => version === 'latest',
});
res.alert({ message: 'Updating [package.json] file' });
pkg.json.name = req.variables.name;
res.text = pkg.toJson();
res.done(args.done);
};
}