Merge pull request #494 from PhantasWeng/commit-hook-default
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:
+18
-2
@@ -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',
|
||||||
|
|||||||
@@ -56,12 +56,14 @@ export const prepareCommitMessageHook = async (
|
|||||||
|
|
||||||
const fileContent = await fs.readFile(messageFilePath);
|
const fileContent = await fs.readFile(messageFilePath);
|
||||||
|
|
||||||
const divider = '# ---------- [OpenCommit] ---------- #';
|
const messageWithComment = `# ${commitMessage}\n\n# ---------- [OpenCommit] ---------- #\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()}`;
|
||||||
|
const messageWithoutComment = `${commitMessage}\n\n${fileContent.toString()}`;
|
||||||
|
|
||||||
await fs.writeFile(
|
const message = config.OCO_HOOK_AUTO_UNCOMMENT
|
||||||
messageFilePath,
|
? messageWithoutComment
|
||||||
`# ${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()}`
|
: messageWithComment;
|
||||||
);
|
|
||||||
|
await fs.writeFile(messageFilePath, message);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
outro(`${chalk.red('✖')} ${error}`);
|
outro(`${chalk.red('✖')} ${error}`);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export const runMigrations = async () => {
|
|||||||
OCO_AI_PROVIDER_ENUM.GROQ,
|
OCO_AI_PROVIDER_ENUM.GROQ,
|
||||||
OCO_AI_PROVIDER_ENUM.MISTRAL,
|
OCO_AI_PROVIDER_ENUM.MISTRAL,
|
||||||
OCO_AI_PROVIDER_ENUM.MLX,
|
OCO_AI_PROVIDER_ENUM.MLX,
|
||||||
OCO_AI_PROVIDER_ENUM.OPENROUTER,
|
OCO_AI_PROVIDER_ENUM.OPENROUTER
|
||||||
].includes(config.OCO_AI_PROVIDER)
|
].includes(config.OCO_AI_PROVIDER)
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user