UNPKG

@sap/cds-dk

Version:

Command line client and development toolkit for the SAP Cloud Application Programming Model

51 lines (42 loc) 1.89 kB
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 }) })) } }