Skip to content

Commit 3d49081

Browse files
committed
build
1 parent 8c318d9 commit 3d49081

2 files changed

Lines changed: 66 additions & 45 deletions

File tree

out/cli.cjs

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22064,14 +22064,19 @@ var configureCommitlintIntegration = async (force = false) => {
2206422064
spin.stop(`Done - please review contents of ${COMMITLINT_LLM_CONFIG_PATH}`);
2206522065
};
2206622066

22067+
// src/utils/removeConventionalCommitWord.ts
22068+
function removeConventionalCommitWord(message) {
22069+
return message.replace(/^(fix|feat)\((.+?)\):/, "($2):");
22070+
}
22071+
2206722072
// src/prompts.ts
2206822073
var config5 = getConfig();
2206922074
var translation3 = i18n[config5?.OCO_LANGUAGE || "en"];
2207022075
var IDENTITY = "You are to act as the author of a commit message in git.";
22071-
var INIT_MAIN_PROMPT2 = (language) => ({
22076+
var INIT_MAIN_PROMPT2 = (language, fullGitMojiSpec) => ({
2207222077
role: import_openai3.ChatCompletionRequestMessageRoleEnum.System,
22073-
content: `${IDENTITY} Your mission is to create clean and comprehensive commit messages as per the conventional commit convention and explain WHAT were the changes and mainly WHY the changes were done. I'll send you an output of 'git diff --staged' command, and you are to convert it into a commit message.
22074-
${config5?.OCO_EMOJI ? "Use GitMoji convention to preface the commit." : "Do not preface the commit with anything."}
22078+
content: `${IDENTITY} Your mission is to create clean and comprehensive commit messages as per the ${fullGitMojiSpec ? "GitMoji specification" : "conventional commit convention"} and explain WHAT were the changes and mainly WHY the changes were done. I'll send you an output of 'git diff --staged' command, and you are to convert it into a commit message.
22079+
${config5?.OCO_EMOJI ? `Use GitMoji convention to preface the commit. Here are some help to choose the right emoji (emoji, description): \u{1F41B}, Fix a bug; \u2728, Introduce new features; \u{1F4DD}, Add or update documentation; \u{1F680}, Deploy stuff; \u2705, Add, update, or pass tests; \u267B\uFE0F, Refactor code; \u2B06\uFE0F, Upgrade dependencies; \u{1F527}, Add or update configuration files; \u{1F310}, Internationalization and localization; \u{1F4A1}, Add or update comments in source code; ${fullGitMojiSpec ? "\u{1F3A8}, Improve structure / format of the code; \u26A1\uFE0F, Improve performance; \u{1F525}, Remove code or files; \u{1F691}\uFE0F, Critical hotfix; \u{1F484}, Add or update the UI and style files; \u{1F389}, Begin a project; \u{1F512}\uFE0F, Fix security issues; \u{1F510}, Add or update secrets; \u{1F516}, Release / Version tags; \u{1F6A8}, Fix compiler / linter warnings; \u{1F6A7}, Work in progress; \u{1F49A}, Fix CI Build; \u2B07\uFE0F, Downgrade dependencies; \u{1F4CC}, Pin dependencies to specific versions; \u{1F477}, Add or update CI build system; \u{1F4C8}, Add or update analytics or track code; \u2795, Add a dependency; \u2796, Remove a dependency; \u{1F528}, Add or update development scripts; \u270F\uFE0F, Fix typos; \u{1F4A9}, Write bad code that needs to be improved; \u23EA\uFE0F, Revert changes; \u{1F500}, Merge branches; \u{1F4E6}\uFE0F, Add or update compiled files or packages; \u{1F47D}\uFE0F, Update code due to external API changes; \u{1F69A}, Move or rename resources (e.g.: files, paths, routes); \u{1F4C4}, Add or update license; \u{1F4A5}, Introduce breaking changes; \u{1F371}, Add or update assets; \u267F\uFE0F, Improve accessibility; \u{1F37B}, Write code drunkenly; \u{1F4AC}, Add or update text and literals; \u{1F5C3}\uFE0F, Perform database related changes; \u{1F50A}, Add or update logs; \u{1F507}, Remove logs; \u{1F465}, Add or update contributor(s); \u{1F6B8}, Improve user experience / usability; \u{1F3D7}\uFE0F, Make architectural changes; \u{1F4F1}, Work on responsive design; \u{1F921}, Mock things; \u{1F95A}, Add or update an easter egg; \u{1F648}, Add or update a .gitignore file; \u{1F4F8}, Add or update snapshots; \u2697\uFE0F, Perform experiments; \u{1F50D}\uFE0F, Improve SEO; \u{1F3F7}\uFE0F, Add or update types; \u{1F331}, Add or update seed files; \u{1F6A9}, Add, update, or remove feature flags; \u{1F945}, Catch errors; \u{1F4AB}, Add or update animations and transitions; \u{1F5D1}\uFE0F, Deprecate code that needs to be cleaned up; \u{1F6C2}, Work on code related to authorization, roles and permissions; \u{1FA79}, Simple fix for a non-critical issue; \u{1F9D0}, Data exploration/inspection; \u26B0\uFE0F, Remove dead code; \u{1F9EA}, Add a failing test; \u{1F454}, Add or update business logic; \u{1FA7A}, Add or update healthcheck; \u{1F9F1}, Infrastructure related changes; \u{1F9D1}\u200D\u{1F4BB}, Improve developer experience; \u{1F4B8}, Add sponsorships or money related infrastructure; \u{1F9F5}, Add or update code related to multithreading or concurrency; \u{1F9BA}, Add or update code related to validation." : ""}` : "Do not preface the commit with anything. Conventional commit keywords:fix, feat, build, chore, ci, docs, style, refactor, perf, test."}
2207522080
${config5?.OCO_DESCRIPTION ? `Add a short description of WHY the changes are done after the commit message. Don't start it with "This commit", just describe the changes.` : "Don't add any descriptions to the commit, only commit message."}
2207622081
Use the present tense. Lines must not be longer than 74 characters. Use ${language} for the commit message.`
2207722082
});
@@ -22104,11 +22109,11 @@ var INIT_DIFF_PROMPT = {
2210422109
};
2210522110
var INIT_CONSISTENCY_PROMPT = (translation4) => ({
2210622111
role: import_openai3.ChatCompletionRequestMessageRoleEnum.Assistant,
22107-
content: `${config5?.OCO_EMOJI ? "\u{1F41B} " : ""}${translation4.commitFix}
22108-
${config5?.OCO_EMOJI ? "\u2728 " : ""}${translation4.commitFeat}
22112+
content: `${config5?.OCO_EMOJI ? `\u{1F41B} ${removeConventionalCommitWord(translation4.commitFix)}` : translation4.commitFix}
22113+
${config5?.OCO_EMOJI ? `\u2728 ${removeConventionalCommitWord(translation4.commitFeat)}` : translation4.commitFeat}
2210922114
${config5?.OCO_DESCRIPTION ? translation4.commitDescription : ""}`
2211022115
});
22111-
var getMainCommitPrompt = async () => {
22116+
var getMainCommitPrompt = async (fullGitMojiSpec) => {
2211222117
switch (config5?.OCO_PROMPT_MODULE) {
2211322118
case "@commitlint":
2211422119
if (!await commitlintLLMConfigExists()) {
@@ -22130,7 +22135,7 @@ var getMainCommitPrompt = async () => {
2213022135
];
2213122136
default:
2213222137
return [
22133-
INIT_MAIN_PROMPT2(translation3.localLanguage),
22138+
INIT_MAIN_PROMPT2(translation3.localLanguage, fullGitMojiSpec),
2213422139
INIT_DIFF_PROMPT,
2213522140
INIT_CONSISTENCY_PROMPT(translation3)
2213622141
];
@@ -22157,8 +22162,8 @@ function mergeDiffs(arr, maxStringLength) {
2215722162
var config6 = getConfig();
2215822163
var MAX_TOKENS_INPUT2 = config6?.OCO_TOKENS_MAX_INPUT || 4096 /* DEFAULT_MAX_TOKENS_INPUT */;
2215922164
var MAX_TOKENS_OUTPUT2 = config6?.OCO_TOKENS_MAX_OUTPUT || 500 /* DEFAULT_MAX_TOKENS_OUTPUT */;
22160-
var generateCommitMessageChatCompletionPrompt = async (diff) => {
22161-
const INIT_MESSAGES_PROMPT = await getMainCommitPrompt();
22165+
var generateCommitMessageChatCompletionPrompt = async (diff, fullGitMojiSpec) => {
22166+
const INIT_MESSAGES_PROMPT = await getMainCommitPrompt(fullGitMojiSpec);
2216222167
const chatContextAsCompletionRequest = [...INIT_MESSAGES_PROMPT];
2216322168
chatContextAsCompletionRequest.push({
2216422169
role: import_openai4.ChatCompletionRequestMessageRoleEnum.User,
@@ -22174,17 +22179,18 @@ var GenerateCommitMessageErrorEnum = ((GenerateCommitMessageErrorEnum2) => {
2217422179
return GenerateCommitMessageErrorEnum2;
2217522180
})(GenerateCommitMessageErrorEnum || {});
2217622181
var ADJUSTMENT_FACTOR = 20;
22177-
var generateCommitMessageByDiff = async (diff) => {
22182+
var generateCommitMessageByDiff = async (diff, fullGitMojiSpec) => {
2217822183
try {
22179-
const INIT_MESSAGES_PROMPT = await getMainCommitPrompt();
22184+
const INIT_MESSAGES_PROMPT = await getMainCommitPrompt(fullGitMojiSpec);
2218022185
const INIT_MESSAGES_PROMPT_LENGTH = INIT_MESSAGES_PROMPT.map(
2218122186
(msg) => tokenCount(msg.content) + 4
2218222187
).reduce((a2, b6) => a2 + b6, 0);
2218322188
const MAX_REQUEST_TOKENS = MAX_TOKENS_INPUT2 - ADJUSTMENT_FACTOR - INIT_MESSAGES_PROMPT_LENGTH - MAX_TOKENS_OUTPUT2;
2218422189
if (tokenCount(diff) >= MAX_REQUEST_TOKENS) {
2218522190
const commitMessagePromises = await getCommitMsgsPromisesFromFileDiffs(
2218622191
diff,
22187-
MAX_REQUEST_TOKENS
22192+
MAX_REQUEST_TOKENS,
22193+
fullGitMojiSpec
2218822194
);
2218922195
const commitMessages = [];
2219022196
for (const promise of commitMessagePromises) {
@@ -22193,7 +22199,7 @@ var generateCommitMessageByDiff = async (diff) => {
2219322199
}
2219422200
return commitMessages.join("\n\n");
2219522201
}
22196-
const messages = await generateCommitMessageChatCompletionPrompt(diff);
22202+
const messages = await generateCommitMessageChatCompletionPrompt(diff, fullGitMojiSpec);
2219722203
const engine = getEngine();
2219822204
const commitMessage = await engine.generateCommitMessage(messages);
2219922205
if (!commitMessage)
@@ -22203,7 +22209,7 @@ var generateCommitMessageByDiff = async (diff) => {
2220322209
throw error;
2220422210
}
2220522211
};
22206-
function getMessagesPromisesByChangesInFile(fileDiff, separator, maxChangeLength) {
22212+
function getMessagesPromisesByChangesInFile(fileDiff, separator, maxChangeLength, fullGitMojiSpec) {
2220722213
const hunkHeaderSeparator = "@@ ";
2220822214
const [fileHeader, ...fileDiffByLines] = fileDiff.split(hunkHeaderSeparator);
2220922215
const mergedChanges = mergeDiffs(
@@ -22224,7 +22230,8 @@ function getMessagesPromisesByChangesInFile(fileDiff, separator, maxChangeLength
2222422230
const commitMsgsFromFileLineDiffs = lineDiffsWithHeader.map(
2222522231
async (lineDiff) => {
2222622232
const messages = await generateCommitMessageChatCompletionPrompt(
22227-
separator + lineDiff
22233+
separator + lineDiff,
22234+
fullGitMojiSpec
2222822235
);
2222922236
return engine.generateCommitMessage(messages);
2223022237
}
@@ -22256,7 +22263,7 @@ function splitDiff(diff, maxChangeLength) {
2225622263
}
2225722264
return splitDiffs;
2225822265
}
22259-
var getCommitMsgsPromisesFromFileDiffs = async (diff, maxDiffLength) => {
22266+
var getCommitMsgsPromisesFromFileDiffs = async (diff, maxDiffLength, fullGitMojiSpec) => {
2226022267
const separator = "diff --git ";
2226122268
const diffByFiles = diff.split(separator).slice(1);
2226222269
const mergedFilesDiffs = mergeDiffs(diffByFiles, maxDiffLength);
@@ -22266,12 +22273,14 @@ var getCommitMsgsPromisesFromFileDiffs = async (diff, maxDiffLength) => {
2226622273
const messagesPromises = getMessagesPromisesByChangesInFile(
2226722274
fileDiff,
2226822275
separator,
22269-
maxDiffLength
22276+
maxDiffLength,
22277+
fullGitMojiSpec
2227022278
);
2227122279
commitMessagePromises.push(...messagesPromises);
2227222280
} else {
2227322281
const messages = await generateCommitMessageChatCompletionPrompt(
22274-
separator + fileDiff
22282+
separator + fileDiff,
22283+
fullGitMojiSpec
2227522284
);
2227622285
const engine = getEngine();
2227722286
commitMessagePromises.push(engine.generateCommitMessage(messages));
@@ -22393,12 +22402,12 @@ var checkMessageTemplate = (extraArgs2) => {
2239322402
}
2239422403
return false;
2239522404
};
22396-
var generateCommitMessageFromGitDiff = async (diff, extraArgs2) => {
22405+
var generateCommitMessageFromGitDiff = async (diff, extraArgs2, fullGitMojiSpec) => {
2239722406
await assertGitRepo();
2239822407
const commitSpinner = le();
2239922408
commitSpinner.start("Generating the commit message");
2240022409
try {
22401-
let commitMessage = await generateCommitMessageByDiff(diff);
22410+
let commitMessage = await generateCommitMessageByDiff(diff, fullGitMojiSpec);
2240222411
const messageTemplate = checkMessageTemplate(extraArgs2);
2240322412
if (config7?.OCO_MESSAGE_TEMPLATE_PLACEHOLDER && typeof messageTemplate === "string") {
2240422413
commitMessage = messageTemplate.replace(
@@ -22480,7 +22489,7 @@ ${source_default.grey("\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2
2248022489
process.exit(1);
2248122490
}
2248222491
};
22483-
async function commit(extraArgs2 = [], isStageAllFlag = false) {
22492+
async function commit(extraArgs2 = [], fullGitMojiSpec = false, isStageAllFlag = false) {
2248422493
if (isStageAllFlag) {
2248522494
const changedFiles2 = await getChangedFiles();
2248622495
if (changedFiles2)
@@ -22509,7 +22518,7 @@ async function commit(extraArgs2 = [], isStageAllFlag = false) {
2250922518
message: "Do you want to stage all files and generate commit message?"
2251022519
});
2251122520
if (isStageAllAndCommitConfirmedByUser && !eD2(isStageAllAndCommitConfirmedByUser)) {
22512-
await commit(extraArgs2, true);
22521+
await commit(extraArgs2, true, fullGitMojiSpec);
2251322522
process.exit(1);
2251422523
}
2251522524
if (stagedFiles.length === 0 && changedFiles.length > 0) {
@@ -22524,7 +22533,7 @@ async function commit(extraArgs2 = [], isStageAllFlag = false) {
2252422533
process.exit(1);
2252522534
await gitAdd({ files });
2252622535
}
22527-
await commit(extraArgs2, false);
22536+
await commit(extraArgs2, false, fullGitMojiSpec);
2252822537
process.exit(1);
2252922538
}
2253022539
stagedFilesSpinner.stop(
@@ -22534,7 +22543,8 @@ ${stagedFiles.map((file) => ` ${file}`).join("\n")}`
2253422543
const [, generateCommitError] = await trytm(
2253522544
generateCommitMessageFromGitDiff(
2253622545
await getDiff({ files: stagedFiles }),
22537-
extraArgs2
22546+
extraArgs2,
22547+
fullGitMojiSpec
2253822548
)
2253922549
);
2254022550
if (generateCommitError) {
@@ -22740,16 +22750,18 @@ Z2(
2274022750
version: package_default.version,
2274122751
name: "opencommit",
2274222752
commands: [configCommand, hookCommand, commitlintConfigCommand],
22743-
flags: {},
22753+
flags: {
22754+
fgm: Boolean
22755+
},
2274422756
ignoreArgv: (type) => type === "unknown-flag" || type === "argument",
2274522757
help: { description: package_default.description }
2274622758
},
22747-
async () => {
22759+
async ({ flags }) => {
2274822760
await checkIsLatestVersion();
2274922761
if (await isHookCalled()) {
2275022762
prepareCommitMessageHook();
2275122763
} else {
22752-
commit(extraArgs);
22764+
commit(extraArgs, flags.fgm);
2275322765
}
2275422766
},
2275522767
extraArgs

0 commit comments

Comments
 (0)