feat(config): add OCO_HOOK_AUTO_UNCOMMENT config key and update commit message hook behavior to conditionally uncomment the message

This commit is contained in:
Phantas Weng
2025-07-08 05:15:46 +00:00
parent 9971b3c74e
commit 3a255a3ad9
2 changed files with 19 additions and 3 deletions
+18 -2
View File
@@ -27,7 +27,8 @@ export enum CONFIG_KEYS {
OCO_API_URL = 'OCO_API_URL', OCO_API_URL = 'OCO_API_URL',
OCO_API_CUSTOM_HEADERS = 'OCO_API_CUSTOM_HEADERS', OCO_API_CUSTOM_HEADERS = 'OCO_API_CUSTOM_HEADERS',
OCO_OMIT_SCOPE = 'OCO_OMIT_SCOPE', OCO_OMIT_SCOPE = 'OCO_OMIT_SCOPE',
OCO_GITPUSH = 'OCO_GITPUSH' // todo: deprecate OCO_GITPUSH = 'OCO_GITPUSH', // todo: deprecate
OCO_HOOK_AUTO_UNCOMMENT = 'OCO_HOOK_AUTO_UNCOMMENT'
} }
export enum CONFIG_MODES { export enum CONFIG_MODES {
@@ -711,6 +712,14 @@ export const configValidators = {
'Must be true or false' 'Must be true or false'
); );
return value; return value;
},
[CONFIG_KEYS.OCO_HOOK_AUTO_UNCOMMENT](value: any) {
validateConfig(
CONFIG_KEYS.OCO_HOOK_AUTO_UNCOMMENT,
typeof value === 'boolean',
'Must be true or false'
);
} }
}; };
@@ -747,6 +756,7 @@ export type ConfigType = {
[CONFIG_KEYS.OCO_ONE_LINE_COMMIT]: boolean; [CONFIG_KEYS.OCO_ONE_LINE_COMMIT]: boolean;
[CONFIG_KEYS.OCO_OMIT_SCOPE]: boolean; [CONFIG_KEYS.OCO_OMIT_SCOPE]: boolean;
[CONFIG_KEYS.OCO_TEST_MOCK_TYPE]: string; [CONFIG_KEYS.OCO_TEST_MOCK_TYPE]: string;
[CONFIG_KEYS.OCO_HOOK_AUTO_UNCOMMENT]: boolean;
}; };
export const defaultConfigPath = pathJoin(homedir(), '.opencommit'); export const defaultConfigPath = pathJoin(homedir(), '.opencommit');
@@ -794,7 +804,8 @@ export const DEFAULT_CONFIG = {
OCO_TEST_MOCK_TYPE: 'commit-message', OCO_TEST_MOCK_TYPE: 'commit-message',
OCO_WHY: false, OCO_WHY: false,
OCO_OMIT_SCOPE: false, OCO_OMIT_SCOPE: false,
OCO_GITPUSH: true // todo: deprecate OCO_GITPUSH: true, // todo: deprecate
OCO_HOOK_AUTO_UNCOMMENT: false
}; };
const initGlobalConfig = (configPath: string = defaultConfigPath) => { const initGlobalConfig = (configPath: string = defaultConfigPath) => {
@@ -1046,6 +1057,11 @@ function getConfigKeyDetails(key) {
description: 'Message template placeholder', description: 'Message template placeholder',
values: ['String (must start with $)'] values: ['String (must start with $)']
}; };
case CONFIG_KEYS.OCO_HOOK_AUTO_UNCOMMENT:
return {
description: 'Automatically uncomment the commit message in the hook',
values: ['true', 'false']
};
default: default:
return { return {
description: 'String value', description: 'String value',
+1 -1
View File
@@ -60,7 +60,7 @@ export const prepareCommitMessageHook = async (
await fs.writeFile( await fs.writeFile(
messageFilePath, messageFilePath,
`# ${commitMessage}\n\n${divider}\n# Remove the # above to use this generated commit message.\n# To cancel the commit, just close this window without making any changes.\n\n${fileContent.toString()}` `${config.OCO_HOOK_AUTO_UNCOMMENT ? '' : '# '}${commitMessage}\n\n${divider}\n# Remove the # above to use this generated commit message.\n# To cancel the commit, just close this window without making any changes.\n\n${fileContent.toString()}`
); );
} catch (error) { } catch (error) {
outro(`${chalk.red('✖')} ${error}`); outro(`${chalk.red('✖')} ${error}`);