sfdx
Version:
Performs Salesforce DX operations with ease! Life is good.
58 lines (47 loc) • 1.92 kB
JavaScript
const config = require('../config/config')
const yargsBuilder = require('../lib/yargsBuilder')
const joinPath = require('path').join
const shell = require('shelljs')
const defaultPath = joinPath(config.projectPath, '..')
module.exports = {
desc: 'Creates a new Salesforce DX project.',
command: ['newproject [newprojectname] [projectname|name|n] [outputdirectory|dir|d]'],
aliases: [],
builder: yargs => {
yargs = yargsBuilder.builder(yargs)
yargs
.positional('newprojectname', {
describe: 'Name of the new project to create'
})
.option('projectname', {
alias: ['name', 'n'],
describe: 'Name of the new project to create'
})
.option('outputdirectory', {
alias: ['dir', 'd'],
describe: 'Directory in which to create the new Salesforce DX project',
default: defaultPath
})
.example('$0 newproject --name MyProject', "- Creates a new Salesforce DX project named 'MyProject'")
.example(
'$0 newproject NewProject --dir myDirectory',
"- Creates a new Salesforce DX project named 'NewProject' in 'myDirectory/'"
)
},
handler: argv => {
argv = yargsBuilder.handler(argv)
let dir = argv.outputdirectory || config.projectPath
let projectName = argv.projectname || argv.newprojectname
// If a name is given, but not a directory, make sure to create a directory in the current one
if (projectName && dir === defaultPath) {
dir = shell.pwd().stdout
} else {
projectName = config.projectDir
}
if (!argv.quiet) console.log("Creating new Salesforce DX project named '" + projectName + "' in " + dir + '...')
let newProjectCommand = 'sfdx force:project:create --projectname ' + projectName + ' --outputdir ' + dir
if (argv.json) newProjectCommand += ' --json'
const result = shell.exec(newProjectCommand)
return result
}
}