@sap/cds-dk
Version:
Command line client and development toolkit for the SAP Cloud Application Programming Model
36 lines (29 loc) • 1.25 kB
JavaScript
const cds = require('../../../cds')
const { exists, mkdirp, path } = cds.utils
const { OPTIONS: { NODEJS, JAVA } } = require('../../constants')
const term = require('../../../util/term')
const { merge } = require('../../merge')
const { renderAndCopy } = require('../../template')
module.exports = class NodejsTemplate extends require('../../plugin') {
static help() {
return 'creates a Node.js-based project'
}
static hasInProduction() {
return !exists('pom.xml') && !cds.cli.options?.add?.has(JAVA)
}
async canRun() {
if (cds.cli.options.add?.has(JAVA)) {
throw `only one runtime per project is supported – specify either ${term.bold(JAVA)} or ${term.bold(NODEJS)}`
}
return true
}
async run() {
const { db, srv, app } = cds.env.folders
if (cds.cli.command === 'init' && cds.cli.options.force) {
await renderAndCopy(path.join(__dirname, 'files'), cds.root, { projectName: path.basename(cds.root) })
} else {
await merge(__dirname, 'files/package.json.hbs').into('package.json', { with: { projectName: path.basename(cds.root) }})
}
await Promise.all([db, srv, app].map(p => mkdirp(p)))
}
}