@sap/cds-dk
Version:
Command line client and development toolkit for the SAP Cloud Application Programming Model
51 lines (42 loc) • 1.89 kB
JavaScript
const { join } = require('path')
const cds = require('../../../cds'), { read, write, copy } = cds.utils
const { env4, readProject } = require('../../projectReader')
const { merge } = require('../../merge')
const { renderAndCopy } = require('../../template')
const mvn = require('../../mvn')
module.exports = class SampleTemplate extends require('../../plugin') {
static help() {
return 'add sample files including Fiori UI'
}
async run() {
const project = readProject()
if (project.extendsApp) { // for extension projects, delegate to extension generator
const ExtensionGenerator = require('../extension')
return new ExtensionGenerator().addSample()
}
const { db, srv, app } = env4('production').folders
switch (project.language) {
case 'nodejs': {
await Promise.all([
copy(join(__dirname, 'files/db')).to(db),
copy(join(__dirname, 'files/srv')).to(srv)
])
const lang = project.isTypescript ? 'typescript' : 'javascript'
await renderAndCopy(join(__dirname, 'files', lang), srv, project)
await copy(join(__dirname, 'files/app')).to(app)
break
}
case 'java':
await mvn.add('sample')
break
}
const { appName, appPath, appUIPaths } = project
await merge(__dirname, 'files/package.json.hbs').into('package.json', { with: { appPath }})
// manifest.json must be unique
await Promise.all(appUIPaths.map(async p => {
const manifest = await read(join(appPath, p, 'webapp/manifest.json'))
manifest['sap.app'].id = appName + '.' + p
await write(join(appPath, p, 'webapp/manifest.json'), manifest, { spaces: 2 })
}))
}
}