From eac26521c613c29414c5e391f4e3bd4d3e27e7a4 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Sun, 23 Jun 2024 16:43:23 +0200 Subject: [PATCH] fix(aidoc_classes): Improve commit message generation by handling empty diffs and updating changelog instructions --- changelog.md | 5 +---- ts/00_commitinfo_data.ts | 2 +- ts/aidocs_classes/commit.ts | 29 +++++++++++++++++++++-------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/changelog.md b/changelog.md index 91d08c9..24fc9cf 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,4 @@ # Changelog ## 1.1.41 -fix(aidoc_classes): Improve commit message generation by handling empty diffs and updating changelog instructions - -## 1.0.2 -- fix(core): update \ No newline at end of file +- fix(aidoc_classes): Improve commit message generation by handling empty diffs and updating changelog instructions \ No newline at end of file diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 64e55fb..9a49a37 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@git.zone/tsdoc', - version: '1.1.41', + version: '1.1.42', description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.' } diff --git a/ts/aidocs_classes/commit.ts b/ts/aidocs_classes/commit.ts index 318dbf9..e84bc2a 100644 --- a/ts/aidocs_classes/commit.ts +++ b/ts/aidocs_classes/commit.ts @@ -22,7 +22,10 @@ export class Commit { public async buildNextCommitObject(): Promise { const smartgitInstance = new plugins.smartgit.Smartgit(); await smartgitInstance.init(); - const gitRepo = await plugins.smartgit.GitRepo.fromOpeningRepoDir(smartgitInstance, this.projectDir); + const gitRepo = await plugins.smartgit.GitRepo.fromOpeningRepoDir( + smartgitInstance, + this.projectDir + ); const diffString = await gitRepo.getUncommittedDiff(); const projectContext = new ProjectContext(this.projectDir); let contextString = await projectContext.update(); @@ -32,7 +35,7 @@ ${contextString} Below is the diff of the uncommitted changes. If nothing is changed, there are no changes: ${diffString || 'No changes.'} - ` + `; let result = await this.aiDocsRef.openaiInstance.chat({ systemMessage: ` @@ -62,7 +65,9 @@ Also you are given a diff }); // console.log(result.message); - const resultObject: INextCommitObject = JSON.parse(result.message.replace('```json', '').replace('```', '')); + const resultObject: INextCommitObject = JSON.parse( + result.message.replace('```json', '').replace('```', '') + ); // lets build the changelog based on that const commitMessages = await gitRepo.getAllCommitMessages(); @@ -83,19 +88,27 @@ You are given Only return the changelog file, so it can be written directly to changelog.md -For the latest version, that is not yet part of the commit messages, use {{nextVersion}} and {{nextVersionMessage}} placeholders. +For the latest version, that is not yet part of the commit messages, add a placeholder entry that uses {{nextVersion}} and {{nextVersionMessage}} as variables to filled later. Only output newer versions and their changes compared to ones already mentioned. We take of appending your output later. `, userMessage: ` The previous changelog file is: -${(!previousChangelog) ? 'No previous changelog file found' : previousChangelog.contents.toString()} +${!previousChangelog ? 'No previous changelog file found' : previousChangelog.contents.toString()} Here are the commit messages so far: ${commitMessages.join('\n\n')} -` - }) - resultObject.changelog = result2.message; +`, + }); + if (previousChangelog) { + let newChangelog = result2.message; + newChangelog = newChangelog.replace('# Changelog\n\n', ''); + let oldChangelog = previousChangelog.contents.toString().replace('# Changelog\n\n', ''); + newChangelog = `# Changelog\n\n${newChangelog}\n\n${oldChangelog}`; + resultObject.changelog = newChangelog; + } else { + resultObject.changelog = result2.message; + } return resultObject; } }