fix(core): update
This commit is contained in:
		
							
								
								
									
										84
									
								
								ts/aidocs_classes/readme.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								ts/aidocs_classes/readme.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
import type { AiDoc } from '../classes.aidoc.js';
 | 
			
		||||
import * as plugins from '../plugins.js';
 | 
			
		||||
import { ProjectContext } from './projectcontext.js';
 | 
			
		||||
 | 
			
		||||
export class Readme {
 | 
			
		||||
 | 
			
		||||
  // INSTANCE
 | 
			
		||||
  private aiDocsRef: AiDoc;
 | 
			
		||||
  private projectDir: string;
 | 
			
		||||
 | 
			
		||||
  constructor(aiDocsRef: AiDoc, projectDirArg: string) {
 | 
			
		||||
    this.aiDocsRef = aiDocsRef;
 | 
			
		||||
    this.projectDir = projectDirArg;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async build() {
 | 
			
		||||
    let finalReadmeString = ``;
 | 
			
		||||
 | 
			
		||||
    // we can now assemble the directory structure.
 | 
			
		||||
    const projectContext = new ProjectContext(this.projectDir);
 | 
			
		||||
    const contextString = await projectContext.update();
 | 
			
		||||
 | 
			
		||||
    // lets first check legal before introducung any cost
 | 
			
		||||
    const npmExtraJson = JSON.parse(((await projectContext.gatherFiles()).smartfilesNpmextraJSON).contents.toString());
 | 
			
		||||
    const legalInfo = npmExtraJson?.tsdoc?.legal
 | 
			
		||||
    if (!legalInfo) {
 | 
			
		||||
      const error = new Error(`No legal information found in npmextra.json`);
 | 
			
		||||
      console.log(error);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let result = await this.aiDocsRef.openaiInstance.chat(
 | 
			
		||||
      `
 | 
			
		||||
You create markdown readmes for npm projects. You only output the markdown readme.
 | 
			
		||||
 | 
			
		||||
The Readme should follow the following template:
 | 
			
		||||
 | 
			
		||||
# Project Name
 | 
			
		||||
[
 | 
			
		||||
  The name is the module name of package.json
 | 
			
		||||
  The description is in the description field of package.json
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
## Install
 | 
			
		||||
[
 | 
			
		||||
  Write a short text on how to install the project
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
[ 
 | 
			
		||||
  Give code examples here.
 | 
			
		||||
  Construct sensible scenarios for the user.
 | 
			
		||||
  Make sure to show a complete set of features of the module.
 | 
			
		||||
  Don't omit use cases.
 | 
			
		||||
  It does not matter how much time you need.
 | 
			
		||||
  ALWAYS USE ESM SYNTAX AND TYPESCRIPT.
 | 
			
		||||
  DON'T CHICKEN OUT. Write at least 4000 words. More if necessary.
 | 
			
		||||
  If there is already a readme, take the Usage section as base. Remove outdated content, and expand and improve upon the valid parts.
 | 
			
		||||
  Super important: Check for completenes.
 | 
			
		||||
  Don't include any licensing information. This will be added in a later step.
 | 
			
		||||
  Avoid "in conclusions".
 | 
			
		||||
 | 
			
		||||
  npmextra.json has a tsdocs section that provides valuable information about module ideas.
 | 
			
		||||
]
 | 
			
		||||
      `,
 | 
			
		||||
      contextString,
 | 
			
		||||
      []
 | 
			
		||||
    );
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    finalReadmeString += result.message.content + '\n' + legalInfo;
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    console.log(`\n======================\n`);
 | 
			
		||||
    console.log(result.message.content);
 | 
			
		||||
    console.log(`\n======================\n`);
 | 
			
		||||
 | 
			
		||||
    const readme = (await projectContext.gatherFiles()).smartfilesReadme;
 | 
			
		||||
    readme.contents = Buffer.from(finalReadmeString);
 | 
			
		||||
    await readme.write();
 | 
			
		||||
 | 
			
		||||
    return result.message.content;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user