mirror of
https://github.com/strapi/strapi.git
synced 2025-11-10 07:10:11 +00:00
Merge branch 'main' into feature/relations-reordering
This commit is contained in:
commit
23bf8c5dac
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -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}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user