Merge branch 'main' into feature/relations-reordering

This commit is contained in:
Josh 2022-12-05 10:00:01 +00:00
commit 23bf8c5dac
2 changed files with 17 additions and 17 deletions

View File

@ -7,7 +7,7 @@ const promptUser = require('./utils/prompt-user');
// eslint-disable-next-line import/extensions // eslint-disable-next-line import/extensions
const packageJson = require('./package.json'); const packageJson = require('./package.json');
const program = new commander.Command(packageJson.name); const program = new commander.Command();
const databaseOptions = [ const databaseOptions = [
'dbclient', 'dbclient',
@ -21,6 +21,7 @@ const databaseOptions = [
]; ];
program program
.command(packageJson.name)
.version(packageJson.version) .version(packageJson.version)
.arguments('[directory]') .arguments('[directory]')
.option('--no-run', 'Do not start the application after it is created') .option('--no-run', 'Do not start the application after it is created')
@ -39,8 +40,8 @@ program
.option('--template <templateurl>', 'Specify a Strapi template') .option('--template <templateurl>', 'Specify a Strapi template')
.option('--ts, --typescript', 'Use TypeScript to generate the project') .option('--ts, --typescript', 'Use TypeScript to generate the project')
.description('create a new application') .description('create a new application')
.action((directory) => { .action((directory, options) => {
initProject(directory, program); initProject(directory, program, options);
}) })
.parse(process.argv); .parse(process.argv);
@ -57,7 +58,7 @@ function generateApp(projectName, options) {
}); });
} }
async function initProject(projectName, program) { async function initProject(projectName, program, inputOptions) {
if (projectName) { if (projectName) {
await checkInstallPath(resolve(projectName)); await checkInstallPath(resolve(projectName));
} }
@ -65,15 +66,14 @@ async function initProject(projectName, program) {
const programFlags = program.options const programFlags = program.options
.reduce((acc, { short, long }) => [...acc, short, long], []) .reduce((acc, { short, long }) => [...acc, short, long], [])
.filter(Boolean); .filter(Boolean);
if (inputOptions.template && programFlags.includes(inputOptions.template)) {
if (program.template && programFlags.includes(program.template)) { console.error(`${inputOptions.template} is not a valid template`);
console.error(`${program.template} is not a valid template`);
process.exit(1); process.exit(1);
} }
const hasDatabaseOptions = databaseOptions.some((opt) => program[opt]); const hasDatabaseOptions = databaseOptions.some((opt) => inputOptions[opt]);
if (program.quickstart && hasDatabaseOptions) { if (inputOptions.quickstart && hasDatabaseOptions) {
console.error( console.error(
`The quickstart option is incompatible with the following options: ${databaseOptions.join( `The quickstart option is incompatible with the following options: ${databaseOptions.join(
', ' ', '
@ -83,24 +83,24 @@ async function initProject(projectName, program) {
} }
if (hasDatabaseOptions) { if (hasDatabaseOptions) {
program.quickstart = false; // Will disable the quickstart question because != 'undefined' inputOptions.quickstart = false; // Will disable the quickstart question because != 'undefined'
} }
if (program.quickstart) { if (inputOptions.quickstart) {
return generateApp(projectName, program); return generateApp(projectName, inputOptions);
} }
const prompt = await promptUser(projectName, program, hasDatabaseOptions); const prompt = await promptUser(projectName, inputOptions, hasDatabaseOptions);
const directory = prompt.directory || projectName; const directory = prompt.directory || projectName;
await checkInstallPath(resolve(directory)); await checkInstallPath(resolve(directory));
const options = { const options = {
template: program.template, template: inputOptions.template,
quickstart: prompt.quick || program.quickstart, quickstart: prompt.quick || inputOptions.quickstart,
}; };
const generateStrapiAppOptions = { const generateStrapiAppOptions = {
...program, ...inputOptions,
...options, ...options,
}; };

View File

@ -411,7 +411,7 @@ const createJoinTable = (metadata, { attributeName, attribute, meta }) => {
let inverseOrderColumnName = _.snakeCase(`${meta.singularName}_order`); let inverseOrderColumnName = _.snakeCase(`${meta.singularName}_order`);
// if relation is self referencing // if relation is self referencing
if (attribute.relation === 'manyToMany' && joinColumnName === inverseJoinColumnName) { if (attribute.relation === 'manyToMany' && orderColumnName === inverseOrderColumnName) {
inverseOrderColumnName = `inv_${inverseOrderColumnName}`; inverseOrderColumnName = `inv_${inverseOrderColumnName}`;
} }