diff --git a/README.md b/README.md index ab12d621..725ed6bb 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,13 @@ oco config set OCO_LANGUAGE=française The default language setting is **English** All available languages are currently listed in the [i18n](https://github.com/di-sukharev/opencommit/tree/master/src/i18n) folder +### Push to git + +Pushing to git is on by default but if you would like to turn it off just use: +```sh +oc config set OCO_GITPUSH=false +``` + ### Switch to `@commitlint` OpenCommit allows you to choose the prompt module used to generate commit messages. By default, OpenCommit uses its conventional-commit message generator. However, you can switch to using the `@commitlint` prompt module if you prefer. This option lets you generate commit messages in respect with the local config. diff --git a/src/commands/commit.ts b/src/commands/commit.ts index a2d45503..1727db7a 100644 --- a/src/commands/commit.ts +++ b/src/commands/commit.ts @@ -94,13 +94,17 @@ ${chalk.grey('——————————————————')}` const remotes = await getGitRemotes(); + // user isn't pushing, return early + if (config?.OCO_GITPUSH === false) + return + if (!remotes.length) { const { stdout } = await execa('git', ['push']); if (stdout) outro(stdout); process.exit(0); } - if (remotes.length === 1) { + if (remotes.length === 1 && config?.OCO_GITPUSH !== true) { const isPushConfirmedByUser = await confirm({ message: 'Do you want to run `git push`?' }); diff --git a/src/commands/config.ts b/src/commands/config.ts index 4a574b39..3be2bf4a 100644 --- a/src/commands/config.ts +++ b/src/commands/config.ts @@ -25,6 +25,7 @@ export enum CONFIG_KEYS { OCO_MESSAGE_TEMPLATE_PLACEHOLDER = 'OCO_MESSAGE_TEMPLATE_PLACEHOLDER', OCO_PROMPT_MODULE = 'OCO_PROMPT_MODULE', OCO_AI_PROVIDER = 'OCO_AI_PROVIDER', + OCO_GITPUSH = 'OCO_GITPUSH', OCO_ONE_LINE_COMMIT = 'OCO_ONE_LINE_COMMIT' } @@ -180,7 +181,15 @@ export const configValidators = { ['conventional-commit', '@commitlint'].includes(value), `${value} is not supported yet, use '@commitlint' or 'conventional-commit' (default)` ); + return value; + }, + [CONFIG_KEYS.OCO_GITPUSH](value: any) { + validateConfig( + CONFIG_KEYS.OCO_GITPUSH, + typeof value === 'boolean', + 'Must be true or false' + ); return value; }, @@ -233,6 +242,7 @@ export const getConfig = (): ConfigType | null => { process.env.OCO_MESSAGE_TEMPLATE_PLACEHOLDER || '$msg', OCO_PROMPT_MODULE: process.env.OCO_PROMPT_MODULE || 'conventional-commit', OCO_AI_PROVIDER: process.env.OCO_AI_PROVIDER || 'openai', + OCO_GITPUSH: process.env.OCO_GITPUSH === 'false' ? false : true, OCO_ONE_LINE_COMMIT: process.env.OCO_ONE_LINE_COMMIT === 'true' ? true : false }; @@ -244,7 +254,6 @@ export const getConfig = (): ConfigType | null => { for (const configKey of Object.keys(config)) { if ( - !config[configKey] || ['null', 'undefined'].includes(config[configKey]) ) { config[configKey] = undefined;