UNPKG

@platform/cell.tmpl

Version:

Template generator for CellOS.

51 lines (50 loc) 1.7 kB
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); }; }