fix(core): update
This commit is contained in:
parent
5d2c9e6158
commit
3b4c6bd97f
@ -15,12 +15,24 @@ tap.test('should create an AIdocs class', async () => {
|
||||
|
||||
tap.test('should start AIdocs', async () => {
|
||||
await aidocs.start();
|
||||
});
|
||||
|
||||
tap.skip.test('should start AIdocs', async () => {
|
||||
await aidocs.buildReadme('./');
|
||||
});
|
||||
|
||||
tap.test('should start AIdocs', async () => {
|
||||
await aidocs.start();
|
||||
tap.skip.test('should start AIdocs', async () => {
|
||||
await aidocs.buildDescription('./');
|
||||
});
|
||||
|
||||
tap.test('should build commit object', async () => {
|
||||
const commitObject = await aidocs.buildNextCommitObject('./');
|
||||
console.log(commitObject);
|
||||
expect(commitObject).not.toBeUndefined();
|
||||
expect(commitObject).toHaveProperty('message');
|
||||
expect(commitObject).toHaveProperty('recommendedNextVersion');
|
||||
expect(commitObject).toHaveProperty('recommendedNextVersionLevel');
|
||||
|
||||
})
|
||||
|
||||
tap.start();
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@git.zone/tsdoc',
|
||||
version: '1.1.32',
|
||||
version: '1.1.33',
|
||||
description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.'
|
||||
}
|
||||
|
@ -2,6 +2,13 @@ import * as plugins from '../plugins.js';
|
||||
import { AiDoc } from '../classes.aidoc.js';
|
||||
import { ProjectContext } from './projectcontext.js';
|
||||
|
||||
export interface INextCommitObject {
|
||||
recommendedNextVersionLevel: 'patch' | 'minor' | 'major'; // the recommended next version level of the project
|
||||
recommendedNextVersion: string; // the recommended next version of the project
|
||||
message: string; // the commit message. use conventional commits format
|
||||
changelog?: string; // the changelog
|
||||
}
|
||||
|
||||
export class Commit {
|
||||
private aiDocsRef: AiDoc;
|
||||
private projectDir: string;
|
||||
@ -11,9 +18,20 @@ export class Commit {
|
||||
this.projectDir = projectDirArg;
|
||||
}
|
||||
|
||||
public async build() {
|
||||
public async buildNextCommitObject(): Promise<INextCommitObject> {
|
||||
const smartgitInstance = new plugins.smartgit.Smartgit();
|
||||
await smartgitInstance.init();
|
||||
const gitRepo = await plugins.smartgit.GitRepo.fromOpeningRepoDir(smartgitInstance, this.projectDir);
|
||||
const diffString = await gitRepo.getUncommittedDiff();
|
||||
console.log(diffString);
|
||||
const projectContext = new ProjectContext(this.projectDir);
|
||||
const contextString = await projectContext.update();
|
||||
let contextString = await projectContext.update();
|
||||
contextString = `
|
||||
${contextString}
|
||||
|
||||
Here is the diff:
|
||||
${diffString}
|
||||
`
|
||||
|
||||
let result = await this.aiDocsRef.openaiInstance.chat({
|
||||
systemMessage: `
|
||||
@ -41,15 +59,40 @@ Also you are given a diff
|
||||
userMessage: contextString,
|
||||
});
|
||||
|
||||
console.log(result.message);
|
||||
const resultObject = JSON.parse(result.message.replace('```json', '').replace('```', ''));
|
||||
// console.log(result.message);
|
||||
const resultObject: INextCommitObject = JSON.parse(result.message.replace('```json', '').replace('```', ''));
|
||||
|
||||
const npmextraJson = (await projectContext.gatherFiles()).smartfilesNpmextraJSON;
|
||||
const npmextraJsonContent = JSON.parse(npmextraJson.contents.toString());
|
||||
// lets build the changelog based on that
|
||||
const commitMessages = await gitRepo.getAllCommitMessages();
|
||||
const previousChangelogPath = plugins.path.join(this.projectDir, 'changelog.md');
|
||||
let previousChangelog: plugins.smartfile.SmartFile;
|
||||
if (await plugins.smartfile.fs.fileExists(previousChangelogPath)) {
|
||||
previousChangelog = await plugins.smartfile.SmartFile.fromFilePath(previousChangelogPath);
|
||||
}
|
||||
let result2 = await this.aiDocsRef.openaiInstance.chat({
|
||||
messageHistory: [],
|
||||
systemMessage: `
|
||||
You are building a changelog file for the projext.
|
||||
Omit commits and versions that lack relevant changes.
|
||||
|
||||
npmextraJsonContent.gitzone.module.commit = resultObject.message;
|
||||
You are given
|
||||
* the previous changelog file (if available)
|
||||
* the commit messages of the project
|
||||
|
||||
npmextraJson.contents = Buffer.from(JSON.stringify(npmextraJsonContent, null, 2));
|
||||
await npmextraJson.write();
|
||||
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 {{nextDescription}} placeholders.
|
||||
`,
|
||||
userMessage: `
|
||||
The previous changelog file is:
|
||||
${(!previousChangelog) ? 'No previous changelog file found' : previousChangelog.contents.toString()}
|
||||
|
||||
Here are the commit messages so far:
|
||||
|
||||
${commitMessages.join('\n\n')}
|
||||
`
|
||||
})
|
||||
resultObject.changelog = result2.message;
|
||||
return resultObject;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
export * from './commit.js';
|
||||
export * from './description.js';
|
||||
export * from './projectcontext.js';
|
||||
export * from './readme.js';
|
||||
|
@ -85,7 +85,10 @@ export class AiDoc {
|
||||
return await descriptionInstance.build();
|
||||
}
|
||||
|
||||
public async buildNextCommit(projectDirArg: string) {}
|
||||
public async buildNextCommitObject(projectDirArg: string) {
|
||||
const commitInstance = new aiDocsClasses.Commit(this, projectDirArg);
|
||||
return await commitInstance.buildNextCommitObject();
|
||||
}
|
||||
|
||||
public async getProjectContext(projectDirArg: string) {
|
||||
const projectContextInstance = new aiDocsClasses.ProjectContext(projectDirArg);
|
||||
|
Loading…
Reference in New Issue
Block a user