Skip to content

Commit f51393e

Browse files
authored
Merge pull request #545 from majiayu000/fix/issue-493-rebase-slow-hook
fix: skip migrations and version check when called as git hook
2 parents 40182f2 + 83f9193 commit f51393e

File tree

12 files changed

+192
-125
lines changed

12 files changed

+192
-125
lines changed

out/cli.cjs

Lines changed: 65 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -57238,7 +57238,9 @@ var PROVIDER_BILLING_URLS = {
5723857238
};
5723957239
var InsufficientCreditsError = class extends Error {
5724057240
constructor(provider, message) {
57241-
super(message || `Insufficient credits or quota for provider '${provider}'`);
57241+
super(
57242+
message || `Insufficient credits or quota for provider '${provider}'`
57243+
);
5724257244
this.name = "InsufficientCreditsError";
5724357245
this.provider = provider;
5724457246
}
@@ -57490,7 +57492,9 @@ ${source_default.red("\u2716")} ${source_default.bold.red(formatted.title)}
5749057492
`;
5749157493
if (formatted.helpUrl) {
5749257494
output += `
57493-
${source_default.cyan("Help:")} ${source_default.underline(formatted.helpUrl)}
57495+
${source_default.cyan("Help:")} ${source_default.underline(
57496+
formatted.helpUrl
57497+
)}
5749457498
`;
5749557499
}
5749657500
if (formatted.suggestion) {
@@ -67277,8 +67281,8 @@ var MLXEngine = class {
6727767281
var DeepseekEngine = class extends OpenAiEngine {
6727867282
constructor(config7) {
6727967283
super({
67280-
...config7,
67281-
baseURL: "https://api.deepseek.com/v1"
67284+
baseURL: "https://api.deepseek.com/v1",
67285+
...config7
6728267286
});
6728367287
// Identical method from OpenAiEngine, re-implemented here
6728467288
this.generateCommitMessage = async (messages) => {
@@ -67949,11 +67953,9 @@ var GenerateCommitMessageErrorEnum = ((GenerateCommitMessageErrorEnum2) => {
6794967953
return GenerateCommitMessageErrorEnum2;
6795067954
})(GenerateCommitMessageErrorEnum || {});
6795167955
async function handleModelNotFoundError(error, provider, currentModel) {
67952-
console.log(
67953-
source_default.red(`
67956+
console.log(source_default.red(`
6795467957
\u2716 Model '${currentModel}' not found
67955-
`)
67956-
);
67958+
`));
6795767959
const suggestedModels = getSuggestedModels(provider, currentModel);
6795867960
const recommended = RECOMMENDED_MODELS[provider];
6795967961
if (suggestedModels.length === 0) {
@@ -68925,6 +68927,11 @@ var OTHER_PROVIDERS = [
6892568927
"mlx" /* MLX */
6892668928
];
6892768929
var NO_API_KEY_PROVIDERS = [
68930+
"ollama" /* OLLAMA */,
68931+
"mlx" /* MLX */,
68932+
"test" /* TEST */
68933+
];
68934+
var MODEL_REQUIRED_PROVIDERS = [
6892868935
"ollama" /* OLLAMA */,
6892968936
"mlx" /* MLX */
6893068937
];
@@ -69202,21 +69209,25 @@ async function runSetup() {
6920269209
};
6920369210
setGlobalConfig(newConfig);
6920469211
ce(
69205-
`${source_default.green("\u2714")} Configuration saved to ~/.opencommit
69212+
`${source_default.green(
69213+
"\u2714"
69214+
)} Configuration saved to ~/.opencommit
6920669215

69207-
Run ${source_default.cyan("oco")} to generate commit messages!`
69216+
Run ${source_default.cyan(
69217+
"oco"
69218+
)} to generate commit messages!`
6920869219
);
6920969220
return true;
6921069221
}
6921169222
function isFirstRun() {
69212-
if (!getIsGlobalConfigFileExist()) {
69213-
return true;
69214-
}
6921569223
const config7 = getConfig();
6921669224
const provider = config7.OCO_AI_PROVIDER || "openai" /* OPENAI */;
69217-
if (NO_API_KEY_PROVIDERS.includes(provider)) {
69225+
if (MODEL_REQUIRED_PROVIDERS.includes(provider)) {
6921869226
return !config7.OCO_MODEL;
6921969227
}
69228+
if (provider === "test" /* TEST */) {
69229+
return false;
69230+
}
6922069231
return !config7.OCO_API_KEY;
6922169232
}
6922269233
async function promptForMissingApiKey() {
@@ -69229,11 +69240,9 @@ async function promptForMissingApiKey() {
6922969240
return true;
6923069241
}
6923169242
console.log(
69232-
source_default.yellow(
69233-
`
69243+
source_default.yellow(`
6923469244
API key missing for ${provider}. Let's set it up.
69235-
`
69236-
)
69245+
`)
6923769246
);
6923869247
const apiKey = await getApiKey(provider);
6923969248
if (hD2(apiKey)) {
@@ -69291,9 +69300,11 @@ async function listModels(provider, useCache = true) {
6929169300
const providerKey = provider.toLowerCase();
6929269301
models = MODEL_LIST[providerKey] || [];
6929369302
}
69294-
console.log(`
69303+
console.log(
69304+
`
6929569305
${source_default.bold("Available models for")} ${source_default.cyan(provider)}:
69296-
`);
69306+
`
69307+
);
6929769308
if (models.length === 0) {
6929869309
console.log(source_default.dim(" No models found"));
6929969310
} else {
@@ -69313,12 +69324,21 @@ async function refreshModels(provider) {
6931369324
loadingSpinner.start(`Fetching models from ${provider}...`);
6931469325
clearModelCache();
6931569326
try {
69316-
const models = await fetchModelsForProvider(provider, apiKey, void 0, true);
69327+
const models = await fetchModelsForProvider(
69328+
provider,
69329+
apiKey,
69330+
void 0,
69331+
true
69332+
);
6931769333
loadingSpinner.stop(`${source_default.green("+")} Fetched ${models.length} models`);
6931869334
await listModels(provider, true);
6931969335
} catch (error) {
6932069336
loadingSpinner.stop(source_default.red("Failed to fetch models"));
69321-
console.error(source_default.red(`Error: ${error instanceof Error ? error.message : "Unknown error"}`));
69337+
console.error(
69338+
source_default.red(
69339+
`Error: ${error instanceof Error ? error.message : "Unknown error"}`
69340+
)
69341+
);
6932269342
}
6932369343
}
6932469344
var modelsCommand = G3(
@@ -69348,7 +69368,9 @@ var modelsCommand = G3(
6934869368
const cacheInfo = getCacheInfo();
6934969369
if (cacheInfo.timestamp) {
6935069370
console.log(
69351-
source_default.dim(` Cache last updated: ${formatCacheAge2(cacheInfo.timestamp)}`)
69371+
source_default.dim(
69372+
` Cache last updated: ${formatCacheAge2(cacheInfo.timestamp)}`
69373+
)
6935269374
);
6935369375
if (cacheInfo.providers.length > 0) {
6935469376
console.log(
@@ -69363,9 +69385,7 @@ var modelsCommand = G3(
6936369385
} else {
6936469386
await listModels(provider);
6936569387
}
69366-
ce(
69367-
`Run ${source_default.cyan("oco models --refresh")} to update the model list`
69368-
);
69388+
ce(`Run ${source_default.cyan("oco models --refresh")} to update the model list`);
6936969389
}
6937069390
);
6937169391

@@ -69561,7 +69581,13 @@ Z2(
6956169581
{
6956269582
version: package_default.version,
6956369583
name: "opencommit",
69564-
commands: [configCommand, hookCommand, commitlintConfigCommand, setupCommand, modelsCommand],
69584+
commands: [
69585+
configCommand,
69586+
hookCommand,
69587+
commitlintConfigCommand,
69588+
setupCommand,
69589+
modelsCommand
69590+
],
6956569591
flags: {
6956669592
fgm: {
6956769593
type: Boolean,
@@ -69585,23 +69611,23 @@ Z2(
6958569611
help: { description: package_default.description }
6958669612
},
6958769613
async ({ flags }) => {
69614+
if (await isHookCalled()) {
69615+
await prepareCommitMessageHook();
69616+
return;
69617+
}
6958869618
await runMigrations();
6958969619
await checkIsLatestVersion();
69590-
if (await isHookCalled()) {
69591-
prepareCommitMessageHook();
69592-
} else {
69593-
if (isFirstRun()) {
69594-
const setupComplete = await runSetup();
69595-
if (!setupComplete) {
69596-
process.exit(1);
69597-
}
69598-
}
69599-
const hasApiKey = await promptForMissingApiKey();
69600-
if (!hasApiKey) {
69620+
if (isFirstRun()) {
69621+
const setupComplete = await runSetup();
69622+
if (!setupComplete) {
6960169623
process.exit(1);
6960269624
}
69603-
commit(extraArgs, flags.context, false, flags.fgm, flags.yes);
6960469625
}
69626+
const hasApiKey = await promptForMissingApiKey();
69627+
if (!hasApiKey) {
69628+
process.exit(1);
69629+
}
69630+
commit(extraArgs, flags.context, false, flags.fgm, flags.yes);
6960569631
},
6960669632
extraArgs
6960769633
);

out/github-action.cjs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78216,7 +78216,9 @@ var PROVIDER_BILLING_URLS = {
7821678216
};
7821778217
var InsufficientCreditsError = class extends Error {
7821878218
constructor(provider, message) {
78219-
super(message || `Insufficient credits or quota for provider '${provider}'`);
78219+
super(
78220+
message || `Insufficient credits or quota for provider '${provider}'`
78221+
);
7822078222
this.name = "InsufficientCreditsError";
7822178223
this.provider = provider;
7822278224
}
@@ -88062,8 +88064,8 @@ var MLXEngine = class {
8806288064
var DeepseekEngine = class extends OpenAiEngine {
8806388065
constructor(config6) {
8806488066
super({
88065-
...config6,
88066-
baseURL: "https://api.deepseek.com/v1"
88067+
baseURL: "https://api.deepseek.com/v1",
88068+
...config6
8806788069
});
8806888070
// Identical method from OpenAiEngine, re-implemented here
8806988071
this.generateCommitMessage = async (messages) => {
@@ -88734,11 +88736,9 @@ var GenerateCommitMessageErrorEnum = ((GenerateCommitMessageErrorEnum2) => {
8873488736
return GenerateCommitMessageErrorEnum2;
8873588737
})(GenerateCommitMessageErrorEnum || {});
8873688738
async function handleModelNotFoundError(error, provider, currentModel) {
88737-
console.log(
88738-
source_default.red(`
88739+
console.log(source_default.red(`
8873988740
\u2716 Model '${currentModel}' not found
88740-
`)
88741-
);
88741+
`));
8874288742
const suggestedModels = getSuggestedModels(provider, currentModel);
8874388743
const recommended = RECOMMENDED_MODELS[provider];
8874488744
if (suggestedModels.length === 0) {

src/cli.ts

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ cli(
2424
{
2525
version: packageJSON.version,
2626
name: 'opencommit',
27-
commands: [configCommand, hookCommand, commitlintConfigCommand, setupCommand, modelsCommand],
27+
commands: [
28+
configCommand,
29+
hookCommand,
30+
commitlintConfigCommand,
31+
setupCommand,
32+
modelsCommand
33+
],
2834
flags: {
2935
fgm: {
3036
type: Boolean,
@@ -48,28 +54,29 @@ cli(
4854
help: { description: packageJSON.description }
4955
},
5056
async ({ flags }) => {
57+
if (await isHookCalled()) {
58+
await prepareCommitMessageHook();
59+
return;
60+
}
61+
5162
await runMigrations();
5263
await checkIsLatestVersion();
5364

54-
if (await isHookCalled()) {
55-
prepareCommitMessageHook();
56-
} else {
57-
// Check for first run and trigger setup wizard
58-
if (isFirstRun()) {
59-
const setupComplete = await runSetup();
60-
if (!setupComplete) {
61-
process.exit(1);
62-
}
63-
}
64-
65-
// Check for missing API key and prompt if needed
66-
const hasApiKey = await promptForMissingApiKey();
67-
if (!hasApiKey) {
65+
// Check for first run and trigger setup wizard
66+
if (isFirstRun()) {
67+
const setupComplete = await runSetup();
68+
if (!setupComplete) {
6869
process.exit(1);
6970
}
71+
}
7072

71-
commit(extraArgs, flags.context, false, flags.fgm, flags.yes);
73+
// Check for missing API key and prompt if needed
74+
const hasApiKey = await promptForMissingApiKey();
75+
if (!hasApiKey) {
76+
process.exit(1);
7277
}
78+
79+
commit(extraArgs, flags.context, false, flags.fgm, flags.yes);
7380
},
7481
extraArgs
7582
);

src/commands/commit.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ import {
1111
import chalk from 'chalk';
1212
import { execa } from 'execa';
1313
import { generateCommitMessageByDiff } from '../generateCommitMessageFromGitDiff';
14-
import {
15-
formatUserFriendlyError,
16-
printFormattedError
17-
} from '../utils/errors';
14+
import { formatUserFriendlyError, printFormattedError } from '../utils/errors';
1815
import {
1916
assertGitRepo,
2017
getChangedFiles,

src/commands/config.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -849,7 +849,8 @@ export enum OCO_AI_PROVIDER_ENUM {
849849

850850
export const PROVIDER_API_KEY_URLS: Record<string, string | null> = {
851851
[OCO_AI_PROVIDER_ENUM.OPENAI]: 'https://platform.openai.com/api-keys',
852-
[OCO_AI_PROVIDER_ENUM.ANTHROPIC]: 'https://console.anthropic.com/settings/keys',
852+
[OCO_AI_PROVIDER_ENUM.ANTHROPIC]:
853+
'https://console.anthropic.com/settings/keys',
853854
[OCO_AI_PROVIDER_ENUM.GEMINI]: 'https://aistudio.google.com/app/apikey',
854855
[OCO_AI_PROVIDER_ENUM.GROQ]: 'https://console.groq.com/keys',
855856
[OCO_AI_PROVIDER_ENUM.MISTRAL]: 'https://console.mistral.ai/api-keys/',
@@ -872,7 +873,7 @@ export const RECOMMENDED_MODELS: Record<string, string> = {
872873
[OCO_AI_PROVIDER_ENUM.DEEPSEEK]: 'deepseek-chat',
873874
[OCO_AI_PROVIDER_ENUM.OPENROUTER]: 'openai/gpt-4o-mini',
874875
[OCO_AI_PROVIDER_ENUM.AIMLAPI]: 'gpt-4o-mini'
875-
}
876+
};
876877

877878
export type ConfigType = {
878879
[CONFIG_KEYS.OCO_API_KEY]?: string;

0 commit comments

Comments
 (0)