mirror of
https://github.com/strapi/strapi.git
synced 2025-12-06 03:52:38 +00:00
213 lines
5.8 KiB
JavaScript
Executable File
213 lines
5.8 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
'use strict';
|
|
|
|
const _ = require('lodash');
|
|
const resolveCwd = require('resolve-cwd');
|
|
const { yellow } = require('chalk');
|
|
|
|
const program = require('strapi-utils').commander;
|
|
const packageJSON = require('../package.json');
|
|
|
|
const checkCwdIsStrapiApp = name => {
|
|
let logErrorAndExit = () => {
|
|
console.log(
|
|
`You need to run ${yellow(
|
|
`strapi ${name}`
|
|
)} in a Strapi project. Make sure you are in the right directory`
|
|
);
|
|
process.exit(1);
|
|
};
|
|
|
|
try {
|
|
const pkgJSON = require(process.cwd() + '/package.json');
|
|
if (!_.has(pkgJSON, 'dependencies.strapi')) {
|
|
logErrorAndExit(name);
|
|
}
|
|
} catch (err) {
|
|
logErrorAndExit(name);
|
|
}
|
|
};
|
|
|
|
const getLocalScript = name => (...args) => {
|
|
checkCwdIsStrapiApp(name);
|
|
|
|
const cmdPath = resolveCwd.silent(`strapi/lib/commands/${name}`);
|
|
if (!cmdPath) {
|
|
console.log(
|
|
`Error loading the local ${yellow(
|
|
name
|
|
)} command. Strapi might not be installed in your "node_modules". You may need to run "npm install"`
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
return require(cmdPath)(...args);
|
|
};
|
|
|
|
/**
|
|
* Normalize version argument
|
|
*
|
|
* `$ strapi -v`
|
|
* `$ strapi -V`
|
|
* `$ strapi --version`
|
|
* `$ strapi version`
|
|
*/
|
|
|
|
program.allowUnknownOption(true);
|
|
|
|
// Expose version.
|
|
program.version(packageJSON.version, '-v, --version');
|
|
|
|
// Make `-v` option case-insensitive.
|
|
process.argv = _.map(process.argv, arg => {
|
|
return arg === '-V' ? '-v' : arg;
|
|
});
|
|
|
|
// `$ strapi version` (--version synonym)
|
|
program
|
|
.command('version')
|
|
.description('output your version of Strapi')
|
|
.action(() => {
|
|
console.log(packageJSON.version);
|
|
});
|
|
|
|
// `$ strapi console`
|
|
program
|
|
.command('console')
|
|
.description('open the Strapi framework console')
|
|
.action(getLocalScript('console'));
|
|
|
|
// `$ strapi new`
|
|
program
|
|
.command('new [name]')
|
|
.option('--debug', 'Display database connection error')
|
|
.option('--quickstart', 'Quickstart app creation')
|
|
.option('--dbclient <dbclient>', 'Database client')
|
|
.option('--dbhost <dbhost>', 'Database host')
|
|
.option('--dbsrv <dbsrv>', 'Database srv')
|
|
.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('--dbauth <dbauth>', 'Authentication Database')
|
|
.option('--dbfile <dbfile>', 'Database file path for sqlite')
|
|
.option('--dbforce', 'Overwrite database content if any')
|
|
.description('create a new application')
|
|
.action(require('../lib/commands/new'));
|
|
|
|
// `$ strapi start`
|
|
program
|
|
.command('start')
|
|
.description('Start your Strapi application')
|
|
.action(getLocalScript('start'));
|
|
|
|
// `$ strapi develop`
|
|
program
|
|
.command('develop')
|
|
.alias('dev')
|
|
.option('--no-build', 'Disable build', false)
|
|
.description('Start your Strapi application in development mode')
|
|
.action(getLocalScript('develop'));
|
|
|
|
// `$ strapi generate:api`
|
|
program
|
|
.command('generate:api <id> [attributes...]')
|
|
.option('-t, --tpl <template>', 'template name')
|
|
.option('-a, --api <api>', 'API name to generate a sub API')
|
|
.option('-p, --plugin <plugin>', 'plugin name to generate a sub API')
|
|
.description('generate a basic API')
|
|
.action((id, attributes, cliArguments) => {
|
|
cliArguments.attributes = attributes;
|
|
getLocalScript('generate')(id, cliArguments);
|
|
});
|
|
|
|
// `$ strapi generate:controller`
|
|
program
|
|
.command('generate:controller <id>')
|
|
.option('-a, --api <api>', 'API name to generate a sub API')
|
|
.option('-p, --plugin <api>', 'plugin name')
|
|
.option('-t, --tpl <template>', 'template name')
|
|
.description('generate a controller for an API')
|
|
.action(getLocalScript('generate'));
|
|
|
|
// `$ strapi generate:model`
|
|
program
|
|
.command('generate:model <id> [attributes...]')
|
|
.option('-a, --api <api>', 'API name to generate a sub API')
|
|
.option('-p, --plugin <api>', 'plugin name')
|
|
.option('-t, --tpl <template>', 'template name')
|
|
.description('generate a model for an API')
|
|
.action((id, attributes, cliArguments) => {
|
|
cliArguments.attributes = attributes;
|
|
getLocalScript('generate')(id, cliArguments);
|
|
});
|
|
|
|
// `$ strapi generate:policy`
|
|
program
|
|
.command('generate:policy <id>')
|
|
.option('-a, --api <api>', 'API name')
|
|
.option('-p, --plugin <api>', 'plugin name')
|
|
.description('generate a policy for an API')
|
|
.action(getLocalScript('generate'));
|
|
|
|
// `$ strapi generate:service`
|
|
program
|
|
.command('generate:service <id>')
|
|
.option('-a, --api <api>', 'API name')
|
|
.option('-p, --plugin <api>', 'plugin name')
|
|
.option('-t, --tpl <template>', 'template name')
|
|
.description('generate a service for an API')
|
|
.action(getLocalScript('generate'));
|
|
|
|
// `$ strapi generate:plugin`
|
|
program
|
|
.command('generate:plugin <id>')
|
|
.option('-n, --name <name>', 'Plugin name')
|
|
.description('generate a basic plugin')
|
|
.action(getLocalScript('generate'));
|
|
|
|
program
|
|
.command('build')
|
|
.description('Builds the strapi admin app')
|
|
.action(getLocalScript('build'));
|
|
|
|
// `$ strapi install`
|
|
program
|
|
.command('install [plugins...]')
|
|
.description('install a Strapi plugin')
|
|
.action(getLocalScript('install'));
|
|
|
|
// `$ strapi uninstall`
|
|
program
|
|
.command('uninstall [plugins...]')
|
|
.description('uninstall a Strapi plugin')
|
|
.option('-d, --delete-files', 'Delete files', false)
|
|
.action(getLocalScript('uninstall'));
|
|
|
|
/**
|
|
* Normalize help argument
|
|
*/
|
|
|
|
// `$ strapi help` (--help synonym)
|
|
program
|
|
.command('help')
|
|
.description('output the help')
|
|
.action(program.usageMinusWildcard);
|
|
|
|
// `$ strapi <unrecognized_cmd>`
|
|
// Mask the '*' in `help`.
|
|
program.command('*').action(program.usageMinusWildcard);
|
|
|
|
// Don't balk at unknown options.
|
|
|
|
/**
|
|
* `$ strapi`
|
|
*/
|
|
|
|
program.parse(process.argv);
|
|
const NO_COMMAND_SPECIFIED = program.args.length === 0;
|
|
if (NO_COMMAND_SPECIFIED) {
|
|
program.usageMinusWildcard();
|
|
}
|