strapi/packages/cli/create-strapi-app/create-strapi-app.js

69 lines
2.2 KiB
JavaScript
Raw Normal View History

2019-06-20 15:45:14 +02:00
'use strict';
// FIXME
/* eslint-disable import/extensions */
2019-06-20 15:45:14 +02:00
const commander = require('commander');
2021-04-29 13:51:12 +02:00
const generateNewApp = require('@strapi/generate-new');
const promptUser = require('./utils/prompt-user');
const packageJson = require('./package.json');
2019-06-20 15:45:14 +02:00
const program = new commander.Command(packageJson.name);
program
.version(packageJson.version)
.arguments('[directory]')
2019-07-08 09:20:34 +02:00
.option('--no-run', 'Do not start the application after it is created')
.option('--use-npm', 'Force usage of npm instead of yarn to create the project')
2019-06-20 15:45:14 +02:00
.option('--debug', 'Display database connection error')
.option('--quickstart', 'Quickstart app creation')
.option('--dbclient <dbclient>', 'Database client')
.option('--dbhost <dbhost>', 'Database host')
.option('--dbport <dbport>', 'Database port')
.option('--dbname <dbname>', 'Database name')
.option('--dbusername <dbusername>', 'Database username')
.option('--dbpassword <dbpassword>', 'Database password')
.option('--dbssl <dbssl>', 'Database SSL')
.option('--dbfile <dbfile>', 'Database file path for sqlite')
.option('--dbforce', 'Overwrite database content if any')
.option('--template <templateurl>', 'Specify a Strapi template')
2019-06-20 15:45:14 +02:00
.description('create a new application')
.action(directory => {
initProject(directory, program);
2019-06-20 15:45:14 +02:00
})
.parse(process.argv);
function generateApp(projectName, options) {
if (!projectName) {
console.error('Please specify the <directory> of your project when using --quickstart');
// eslint-disable-next-line no-process-exit
process.exit(1);
}
return generateNewApp(projectName, options).then(() => {
if (process.platform === 'win32') {
process.exit(0);
}
});
2019-06-20 15:45:14 +02:00
}
async function initProject(projectName, program) {
if (program.quickstart) {
return generateApp(projectName, program);
}
const prompt = await promptUser(projectName, program.template);
const directory = prompt.directory || projectName;
const options = {
template: prompt.template || program.template,
quickstart: prompt.quick,
};
const generateStrapiAppOptions = {
...program,
...options,
};
return generateApp(directory, generateStrapiAppOptions);
}