diff --git a/cli/jhipster-command.mjs b/cli/jhipster-command.mjs index fabdf24c302c..57e9ddeeeb29 100644 --- a/cli/jhipster-command.mjs +++ b/cli/jhipster-command.mjs @@ -225,6 +225,9 @@ export default class JHipsterCommand extends Command { if (optionDefinition.choices && optionDefinition.choices.length > 0) { option.choices(optionDefinition.choices); } + if (optionDefinition.implies) { + option.implies(optionDefinition.implies); + } return this.addOption(option); } } diff --git a/generators/app/__snapshots__/generator.spec.ts.snap b/generators/app/__snapshots__/generator.spec.ts.snap index 39149896843c..aa4c41b7f4a2 100644 --- a/generators/app/__snapshots__/generator.spec.ts.snap +++ b/generators/app/__snapshots__/generator.spec.ts.snap @@ -65,6 +65,7 @@ Options: --client-root-dir Client root --skip-git Skip git repository initialization --force-git Force commit to git repository + --commit-msg Commit changes (implies forceGit) --cypress-coverage Enable Cypress code coverage report generation --cypress-audit Enable cypress-audit/lighthouse report generation --enable-translation Enable translation diff --git a/generators/git/command.ts b/generators/git/command.ts index 78fd48ef5b83..bd6c9078c745 100644 --- a/generators/git/command.ts +++ b/generators/git/command.ts @@ -34,6 +34,16 @@ const command = { }, scope: 'generator', }, + commitMsg: { + description: 'Commit changes (implies forceGit)', + cli: { + type: String, + implies: { + forceGit: true, + }, + }, + scope: 'generator', + }, monorepository: { description: 'Use monorepository', cli: { diff --git a/generators/git/generator.ts b/generators/git/generator.ts index a1445d66b439..274c36a28a59 100644 --- a/generators/git/generator.ts +++ b/generators/git/generator.ts @@ -28,10 +28,11 @@ import { files } from './files.js'; * @extends {BaseGenerator} */ export default class GitGenerator extends BaseGenerator { - gitInitialized; - skipGit; - forceGit; - existingRepository; + gitInitialized!: boolean; + skipGit!: boolean; + forceGit!: boolean; + existingRepository!: boolean; + commitMsg!: string; async beforeQueue() { if (!this.fromBlueprint) { @@ -134,9 +135,11 @@ export default class GitGenerator extends BaseGenerator { } } try { - let commitMsg = existingApplication - ? `Regenerated ${this.jhipsterConfig.baseName} using generator-jhipster@${this.jhipsterConfig.jhipsterVersion}` - : `Initial version of ${this.jhipsterConfig.baseName} generated by generator-jhipster@${this.jhipsterConfig.jhipsterVersion}`; + let commitMsg = + this.commitMsg ?? + (existingApplication + ? `Regenerated ${this.jhipsterConfig.baseName} using generator-jhipster@${this.jhipsterConfig.jhipsterVersion}` + : `Initial version of ${this.jhipsterConfig.baseName} generated by generator-jhipster@${this.jhipsterConfig.jhipsterVersion}`); if (this.jhipsterConfig.blueprints && this.jhipsterConfig.blueprints.length > 0) { const bpInfo = this.jhipsterConfig.blueprints.map(bp => `${bp.name}@${bp.version}`).join(', '); commitMsg += ` with blueprints ${bpInfo}`; diff --git a/generators/init/__snapshots__/generator.spec.ts.snap b/generators/init/__snapshots__/generator.spec.ts.snap index 18b0abd3ff78..207df51de565 100644 --- a/generators/init/__snapshots__/generator.spec.ts.snap +++ b/generators/init/__snapshots__/generator.spec.ts.snap @@ -11,9 +11,12 @@ Options: --skip-install Do not automatically install dependencies (default: false) --force-install Fail on install dependencies error (default: false) --ask-answered Show prompts for already configured options (default: false) + --skip-git Skip git repository initialization + --force-git Force commit to git repository + --commit-msg Commit changes (implies forceGit) + --monorepository Use monorepository --base-name Application base name --prettier-tab-width Default tab width for prettier - --monorepository Use monorepository --skip-commit-hook Skip adding husky commit hooks -h, --help display help for command " diff --git a/generators/init/command.ts b/generators/init/command.ts index 559f8c4ecc41..8935ece74f6e 100644 --- a/generators/init/command.ts +++ b/generators/init/command.ts @@ -19,9 +19,9 @@ import type { JHipsterCommandDefinition } from '../../lib/command/index.js'; import { GENERATOR_PROJECT_NAME } from '../generator-list.js'; -const command: JHipsterCommandDefinition = { +const command = { options: {}, - import: [GENERATOR_PROJECT_NAME, 'jhipster:javascript:prettier', 'jhipster:javascript:husky'], -}; + import: ['jhipster:git', GENERATOR_PROJECT_NAME, 'jhipster:javascript:prettier', 'jhipster:javascript:husky'], +} as const satisfies JHipsterCommandDefinition; export default command; diff --git a/generators/jdl/__snapshots__/generator.spec.ts.snap b/generators/jdl/__snapshots__/generator.spec.ts.snap index fde5cf097796..8fb64cbfa892 100644 --- a/generators/jdl/__snapshots__/generator.spec.ts.snap +++ b/generators/jdl/__snapshots__/generator.spec.ts.snap @@ -174,6 +174,7 @@ Options: --workspaces Generate workspaces for multiples applications --skip-git Skip git repository initialization --force-git Force commit to git repository + --commit-msg Commit changes (implies forceGit) --monorepository Use monorepository --defaults Execute jhipster with default config --skip-client Skip the client-side application generation diff --git a/lib/command/types.d.ts b/lib/command/types.d.ts index 5fa012ff2a63..77950a956f90 100644 --- a/lib/command/types.d.ts +++ b/lib/command/types.d.ts @@ -31,11 +31,18 @@ export type PromptSpec = { type JHipsterArgumentConfig = SetOptional & { scope?: CommandConfigScope }; +type CliSpec = SetOptional & { + env?: string; + /** + * Imply other options. + */ + implies?: Record; +}; + export type ConfigSpec = { readonly description?: string; readonly choices?: JHispterChoices; - - readonly cli?: SetOptional & { env?: string }; + readonly cli?: CliSpec; readonly argument?: JHipsterArgumentConfig; readonly prompt?: | PromptSpec