@malikasadjaved/readme-ai 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +309 -0
- package/dist/analyzers/badge-generator.d.ts +12 -0
- package/dist/analyzers/badge-generator.d.ts.map +1 -0
- package/dist/analyzers/badge-generator.js +139 -0
- package/dist/analyzers/badge-generator.js.map +1 -0
- package/dist/analyzers/code-analyzer.d.ts +34 -0
- package/dist/analyzers/code-analyzer.d.ts.map +1 -0
- package/dist/analyzers/code-analyzer.js +210 -0
- package/dist/analyzers/code-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +16 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +169 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/diagram-builder.d.ts +11 -0
- package/dist/analyzers/diagram-builder.d.ts.map +1 -0
- package/dist/analyzers/diagram-builder.js +163 -0
- package/dist/analyzers/diagram-builder.js.map +1 -0
- package/dist/analyzers/file-scanner.d.ts +17 -0
- package/dist/analyzers/file-scanner.d.ts.map +1 -0
- package/dist/analyzers/file-scanner.js +103 -0
- package/dist/analyzers/file-scanner.js.map +1 -0
- package/dist/analyzers/index.d.ts +7 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +7 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/repo-fetcher.d.ts +22 -0
- package/dist/analyzers/repo-fetcher.d.ts.map +1 -0
- package/dist/analyzers/repo-fetcher.js +134 -0
- package/dist/analyzers/repo-fetcher.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +54 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/generate.d.ts +17 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +189 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/generators/changelog.d.ts +7 -0
- package/dist/generators/changelog.d.ts.map +1 -0
- package/dist/generators/changelog.js +15 -0
- package/dist/generators/changelog.js.map +1 -0
- package/dist/generators/contributing.d.ts +5 -0
- package/dist/generators/contributing.d.ts.map +1 -0
- package/dist/generators/contributing.js +28 -0
- package/dist/generators/contributing.js.map +1 -0
- package/dist/generators/index.d.ts +6 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +6 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/install.d.ts +14 -0
- package/dist/generators/install.d.ts.map +1 -0
- package/dist/generators/install.js +95 -0
- package/dist/generators/install.js.map +1 -0
- package/dist/generators/overview.d.ts +20 -0
- package/dist/generators/overview.d.ts.map +1 -0
- package/dist/generators/overview.js +87 -0
- package/dist/generators/overview.js.map +1 -0
- package/dist/generators/usage.d.ts +33 -0
- package/dist/generators/usage.d.ts.map +1 -0
- package/dist/generators/usage.js +130 -0
- package/dist/generators/usage.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +3 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +47 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/gemini.d.ts +3 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +28 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +24 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/ollama.d.ts +3 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +46 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +3 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +40 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/themes/academic.d.ts +3 -0
- package/dist/themes/academic.d.ts.map +1 -0
- package/dist/themes/academic.js +113 -0
- package/dist/themes/academic.js.map +1 -0
- package/dist/themes/default.d.ts +3 -0
- package/dist/themes/default.d.ts.map +1 -0
- package/dist/themes/default.js +114 -0
- package/dist/themes/default.js.map +1 -0
- package/dist/themes/hacker.d.ts +3 -0
- package/dist/themes/hacker.d.ts.map +1 -0
- package/dist/themes/hacker.js +100 -0
- package/dist/themes/hacker.js.map +1 -0
- package/dist/themes/index.d.ts +26 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +23 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/minimal.d.ts +3 -0
- package/dist/themes/minimal.d.ts.map +1 -0
- package/dist/themes/minimal.js +85 -0
- package/dist/themes/minimal.js.map +1 -0
- package/dist/themes/modern.d.ts +3 -0
- package/dist/themes/modern.d.ts.map +1 -0
- package/dist/themes/modern.js +114 -0
- package/dist/themes/modern.js.map +1 -0
- package/dist/utils/file-utils.d.ts +9 -0
- package/dist/utils/file-utils.d.ts.map +1 -0
- package/dist/utils/file-utils.js +93 -0
- package/dist/utils/file-utils.js.map +1 -0
- package/dist/utils/github-api.d.ts +27 -0
- package/dist/utils/github-api.d.ts.map +1 -0
- package/dist/utils/github-api.js +68 -0
- package/dist/utils/github-api.js.map +1 -0
- package/dist/utils/language-detector.d.ts +18 -0
- package/dist/utils/language-detector.d.ts.map +1 -0
- package/dist/utils/language-detector.js +139 -0
- package/dist/utils/language-detector.js.map +1 -0
- package/dist/utils/markdown-writer.d.ts +5 -0
- package/dist/utils/markdown-writer.d.ts.map +1 -0
- package/dist/utils/markdown-writer.js +19 -0
- package/dist/utils/markdown-writer.js.map +1 -0
- package/dist/utils/template-engine.d.ts +9 -0
- package/dist/utils/template-engine.d.ts.map +1 -0
- package/dist/utils/template-engine.js +29 -0
- package/dist/utils/template-engine.js.map +1 -0
- package/package.json +60 -0
- package/templates/.readmeaiignore.example +41 -0
- package/templates/github-action.yml +35 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
export const config = new Conf({
|
|
3
|
+
projectName: 'readme-ai',
|
|
4
|
+
defaults: {
|
|
5
|
+
provider: 'anthropic',
|
|
6
|
+
default_theme: 'default',
|
|
7
|
+
default_output: 'README.md',
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
export function getAPIKey(provider) {
|
|
11
|
+
switch (provider) {
|
|
12
|
+
case 'anthropic':
|
|
13
|
+
return process.env.ANTHROPIC_API_KEY || config.get('anthropic_api_key');
|
|
14
|
+
case 'openai':
|
|
15
|
+
return process.env.OPENAI_API_KEY || config.get('openai_api_key');
|
|
16
|
+
case 'gemini':
|
|
17
|
+
return process.env.GEMINI_API_KEY || config.get('gemini_api_key');
|
|
18
|
+
default:
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function getGitHubToken() {
|
|
23
|
+
return process.env.GITHUB_TOKEN || config.get('github_token');
|
|
24
|
+
}
|
|
25
|
+
export function getOllamaURL() {
|
|
26
|
+
return process.env.OLLAMA_BASE_URL || config.get('ollama_url') || 'http://localhost:11434';
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAcxB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAiB;IAC7C,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE;QACR,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,WAAW;KAC5B;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC1E,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpE,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpE;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,wBAAwB,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.d.ts","sourceRoot":"","sources":["../../src/generators/changelog.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAe1E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function generateChangelogSection(entries) {
|
|
2
|
+
if (entries.length === 0)
|
|
3
|
+
return '';
|
|
4
|
+
const lines = ['## Changelog', ''];
|
|
5
|
+
for (const entry of entries) {
|
|
6
|
+
lines.push(`### ${entry.version} (${entry.date})`);
|
|
7
|
+
lines.push('');
|
|
8
|
+
for (const change of entry.changes) {
|
|
9
|
+
lines.push(`- ${change}`);
|
|
10
|
+
}
|
|
11
|
+
lines.push('');
|
|
12
|
+
}
|
|
13
|
+
return lines.join('\n');
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=changelog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changelog.js","sourceRoot":"","sources":["../../src/generators/changelog.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,wBAAwB,CAAC,OAAyB;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAa,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ScanResult } from '../analyzers/file-scanner.js';
|
|
2
|
+
import type { DependencyAnalysis } from '../analyzers/dependency-analyzer.js';
|
|
3
|
+
export declare function generateContributing(scan: ScanResult, deps?: DependencyAnalysis): string;
|
|
4
|
+
export declare function getLicense(scan: ScanResult): string;
|
|
5
|
+
//# sourceMappingURL=contributing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contributing.d.ts","sourceRoot":"","sources":["../../src/generators/contributing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAsBxF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function generateContributing(scan, deps) {
|
|
2
|
+
const lines = [];
|
|
3
|
+
lines.push('Contributions are welcome! Here\'s how to get started:');
|
|
4
|
+
lines.push('');
|
|
5
|
+
lines.push('1. Fork the repository');
|
|
6
|
+
lines.push('2. Create a feature branch (`git checkout -b feature/amazing-feature`)');
|
|
7
|
+
lines.push('3. Make your changes');
|
|
8
|
+
if (scan.hasTests) {
|
|
9
|
+
const testCmd = deps?.testCommand || 'npm test';
|
|
10
|
+
lines.push(`4. Run the tests (\`${testCmd}\`)`);
|
|
11
|
+
lines.push('5. Commit your changes (`git commit -m \'Add amazing feature\'`)');
|
|
12
|
+
lines.push('6. Push to the branch (`git push origin feature/amazing-feature`)');
|
|
13
|
+
lines.push('7. Open a Pull Request');
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
lines.push('4. Commit your changes (`git commit -m \'Add amazing feature\'`)');
|
|
17
|
+
lines.push('5. Push to the branch (`git push origin feature/amazing-feature`)');
|
|
18
|
+
lines.push('6. Open a Pull Request');
|
|
19
|
+
}
|
|
20
|
+
return lines.join('\n');
|
|
21
|
+
}
|
|
22
|
+
export function getLicense(scan) {
|
|
23
|
+
if (scan.hasLicense) {
|
|
24
|
+
return `This project is licensed under the ${scan.hasLicense} License — see the [LICENSE](LICENSE) file for details.`;
|
|
25
|
+
}
|
|
26
|
+
return 'See the [LICENSE](LICENSE) file for details.';
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=contributing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contributing.js","sourceRoot":"","sources":["../../src/generators/contributing.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,IAAyB;IAC9E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,EAAE,WAAW,IAAI,UAAU,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,KAAK,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,sCAAsC,IAAI,CAAC,UAAU,yDAAyD,CAAC;IACxH,CAAC;IACD,OAAO,8CAA8C,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { generateOverview, type OverviewResult } from './overview.js';
|
|
2
|
+
export { generateInstallSection, type InstallResult, type InstallStep } from './install.js';
|
|
3
|
+
export { generateUsageSection, generateAPIDocs, type UsageResult, type UsageExample, type APIDocsResult, type APIDocEntry } from './usage.js';
|
|
4
|
+
export { generateContributing, getLicense } from './contributing.js';
|
|
5
|
+
export { generateChangelogSection, type ChangelogEntry } from './changelog.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9I,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { generateOverview } from './overview.js';
|
|
2
|
+
export { generateInstallSection } from './install.js';
|
|
3
|
+
export { generateUsageSection, generateAPIDocs } from './usage.js';
|
|
4
|
+
export { generateContributing, getLicense } from './contributing.js';
|
|
5
|
+
export { generateChangelogSection } from './changelog.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAwC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAA6E,MAAM,YAAY,CAAC;AAC9I,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DependencyAnalysis } from '../analyzers/dependency-analyzer.js';
|
|
2
|
+
import type { ScanResult } from '../analyzers/file-scanner.js';
|
|
3
|
+
export interface InstallStep {
|
|
4
|
+
title: string;
|
|
5
|
+
command: string;
|
|
6
|
+
}
|
|
7
|
+
export interface InstallResult {
|
|
8
|
+
prerequisites: string[];
|
|
9
|
+
installSteps: InstallStep[];
|
|
10
|
+
envSetupSteps?: InstallStep[];
|
|
11
|
+
verifyCommand?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function generateInstallSection(deps: DependencyAnalysis, scan: ScanResult): InstallResult;
|
|
14
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/generators/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,GAAG,aAAa,CAsGhG"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export function generateInstallSection(deps, scan) {
|
|
2
|
+
const prerequisites = [];
|
|
3
|
+
const installSteps = [];
|
|
4
|
+
const envSetupSteps = [];
|
|
5
|
+
let verifyCommand;
|
|
6
|
+
// Clone step
|
|
7
|
+
installSteps.push({
|
|
8
|
+
title: 'Clone the repository',
|
|
9
|
+
command: 'git clone <repository-url>\ncd <project-name>',
|
|
10
|
+
});
|
|
11
|
+
switch (deps.packageManager) {
|
|
12
|
+
case 'npm':
|
|
13
|
+
case 'yarn':
|
|
14
|
+
case 'pnpm':
|
|
15
|
+
prerequisites.push(`Node.js ${deps.nodeVersion || '>= 18'}`);
|
|
16
|
+
if (deps.packageManager !== 'npm') {
|
|
17
|
+
prerequisites.push(deps.packageManager);
|
|
18
|
+
}
|
|
19
|
+
installSteps.push({
|
|
20
|
+
title: 'Install dependencies',
|
|
21
|
+
command: deps.installCommand,
|
|
22
|
+
});
|
|
23
|
+
if (deps.buildCommand) {
|
|
24
|
+
installSteps.push({
|
|
25
|
+
title: 'Build the project',
|
|
26
|
+
command: deps.buildCommand,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
verifyCommand = deps.runCommand;
|
|
30
|
+
break;
|
|
31
|
+
case 'pip':
|
|
32
|
+
prerequisites.push(`Python ${deps.pythonVersion || '>= 3.9'}`);
|
|
33
|
+
prerequisites.push('pip');
|
|
34
|
+
installSteps.push({
|
|
35
|
+
title: 'Create a virtual environment',
|
|
36
|
+
command: 'python -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate',
|
|
37
|
+
});
|
|
38
|
+
installSteps.push({
|
|
39
|
+
title: 'Install dependencies',
|
|
40
|
+
command: deps.installCommand,
|
|
41
|
+
});
|
|
42
|
+
verifyCommand = deps.runCommand;
|
|
43
|
+
break;
|
|
44
|
+
case 'cargo':
|
|
45
|
+
prerequisites.push('Rust (latest stable)');
|
|
46
|
+
installSteps.push({
|
|
47
|
+
title: 'Build the project',
|
|
48
|
+
command: deps.installCommand,
|
|
49
|
+
});
|
|
50
|
+
verifyCommand = deps.runCommand;
|
|
51
|
+
break;
|
|
52
|
+
case 'go':
|
|
53
|
+
prerequisites.push('Go >= 1.21');
|
|
54
|
+
installSteps.push({
|
|
55
|
+
title: 'Download dependencies',
|
|
56
|
+
command: deps.installCommand,
|
|
57
|
+
});
|
|
58
|
+
if (deps.buildCommand) {
|
|
59
|
+
installSteps.push({
|
|
60
|
+
title: 'Build the project',
|
|
61
|
+
command: deps.buildCommand,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
verifyCommand = deps.runCommand;
|
|
65
|
+
break;
|
|
66
|
+
default:
|
|
67
|
+
// No recognized package manager
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
// Environment setup
|
|
71
|
+
if (deps.requiresEnvFile) {
|
|
72
|
+
envSetupSteps.push({
|
|
73
|
+
title: 'Copy the example environment file',
|
|
74
|
+
command: 'cp .env.example .env',
|
|
75
|
+
});
|
|
76
|
+
envSetupSteps.push({
|
|
77
|
+
title: 'Edit .env with your configuration',
|
|
78
|
+
command: '# Edit .env and fill in the required values',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// Docker instructions
|
|
82
|
+
if (scan.hasDocker) {
|
|
83
|
+
installSteps.push({
|
|
84
|
+
title: 'Or run with Docker',
|
|
85
|
+
command: 'docker compose up --build',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
prerequisites,
|
|
90
|
+
installSteps,
|
|
91
|
+
envSetupSteps: envSetupSteps.length > 0 ? envSetupSteps : undefined,
|
|
92
|
+
verifyCommand,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/generators/install.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,sBAAsB,CAAC,IAAwB,EAAE,IAAgB;IAC/E,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,IAAI,aAAiC,CAAC;IAEtC,aAAa;IACb,YAAY,CAAC,IAAI,CAAC;QAChB,KAAK,EAAE,sBAAsB;QAC7B,OAAO,EAAE,+CAA+C;KACzD,CAAC,CAAC;IAEH,QAAQ,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,aAAa,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;gBAClC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1C,CAAC;YACD,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,IAAI,CAAC,YAAY;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAChC,MAAM;QAER,KAAK,KAAK;YACR,aAAa,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;YAC/D,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,8BAA8B;gBACrC,OAAO,EAAE,sFAAsF;aAChG,CAAC,CAAC;YACH,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,sBAAsB;gBAC7B,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC,CAAC;YACH,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAChC,MAAM;QAER,KAAK,OAAO;YACV,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC,CAAC;YACH,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAChC,MAAM;QAER,KAAK,IAAI;YACP,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC;gBAChB,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,IAAI,CAAC,cAAc;aAC7B,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,mBAAmB;oBAC1B,OAAO,EAAE,IAAI,CAAC,YAAY;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAChC,MAAM;QAER;YACE,gCAAgC;YAChC,MAAM;IACV,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,mCAAmC;YAC1C,OAAO,EAAE,sBAAsB;SAChC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,mCAAmC;YAC1C,OAAO,EAAE,6CAA6C;SACvD,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,YAAY,CAAC,IAAI,CAAC;YAChB,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa;QACb,YAAY;QACZ,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;QACnE,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ScanResult } from '../analyzers/file-scanner.js';
|
|
2
|
+
import type { DependencyAnalysis } from '../analyzers/dependency-analyzer.js';
|
|
3
|
+
import type { CodeAnalysis } from '../analyzers/code-analyzer.js';
|
|
4
|
+
import type { AIProvider } from '../providers/index.js';
|
|
5
|
+
export interface OverviewResult {
|
|
6
|
+
tagline: string;
|
|
7
|
+
description: string;
|
|
8
|
+
keyFeatures: string[];
|
|
9
|
+
useCases: string[];
|
|
10
|
+
targetAudience: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function generateOverview(params: {
|
|
13
|
+
scan: ScanResult;
|
|
14
|
+
deps: DependencyAnalysis;
|
|
15
|
+
codeAnalysis: CodeAnalysis;
|
|
16
|
+
provider: AIProvider;
|
|
17
|
+
existingDescription?: string;
|
|
18
|
+
userContext?: string;
|
|
19
|
+
}): Promise<OverviewResult>;
|
|
20
|
+
//# sourceMappingURL=overview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../src/generators/overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;IACzB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAiD1B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export async function generateOverview(params) {
|
|
2
|
+
const { scan, deps, codeAnalysis, provider, existingDescription, userContext } = params;
|
|
3
|
+
const prompt = `Analyze this codebase and generate a README overview.
|
|
4
|
+
|
|
5
|
+
PROJECT INFO:
|
|
6
|
+
- Primary language: ${scan.languages[0]?.name || 'Unknown'} (${scan.languages[0]?.percentage || 0}%)
|
|
7
|
+
- Other languages: ${scan.languages.slice(1, 4).map(l => l.name).join(', ') || 'None'}
|
|
8
|
+
- Frameworks: ${scan.frameworks.join(', ') || 'None detected'}
|
|
9
|
+
- Package manager: ${deps.packageManager || 'None detected'}
|
|
10
|
+
- Has tests: ${scan.hasTests}
|
|
11
|
+
- Has Docker: ${scan.hasDocker}
|
|
12
|
+
- Has CI/CD: ${scan.hasCICD}
|
|
13
|
+
- License: ${scan.hasLicense || 'Unknown'}
|
|
14
|
+
- Total files: ${scan.totalFiles}
|
|
15
|
+
|
|
16
|
+
DEPENDENCIES:
|
|
17
|
+
${deps.mainDependencies.slice(0, 15).join(', ') || 'None'}
|
|
18
|
+
|
|
19
|
+
CODE STRUCTURE:
|
|
20
|
+
${scan.directoryTree}
|
|
21
|
+
|
|
22
|
+
ENTRY POINTS:
|
|
23
|
+
${scan.entryPoints.join(', ') || 'None found'}
|
|
24
|
+
|
|
25
|
+
KEY CODE PATTERNS DETECTED:
|
|
26
|
+
- API Endpoints: ${codeAnalysis.apiEndpoints.map(e => `${e.method} ${e.path}`).join(', ') || 'None'}
|
|
27
|
+
- CLI Commands: ${codeAnalysis.cliCommands.map(c => c.name).join(', ') || 'None'}
|
|
28
|
+
- Main exports: ${codeAnalysis.exports.slice(0, 10).map(e => e.name).join(', ') || 'None'}
|
|
29
|
+
- Environment variables: ${codeAnalysis.envVariables.join(', ') || 'None'}
|
|
30
|
+
|
|
31
|
+
${existingDescription ? `EXISTING DESCRIPTION: ${existingDescription}` : ''}
|
|
32
|
+
${userContext ? `USER-PROVIDED CONTEXT: ${userContext}` : ''}
|
|
33
|
+
|
|
34
|
+
Generate a JSON response with these fields:
|
|
35
|
+
{
|
|
36
|
+
"tagline": "A compelling one-line description (under 100 chars)",
|
|
37
|
+
"description": "2-3 paragraph project description that explains what the project does, why it exists, and its key technical approach",
|
|
38
|
+
"keyFeatures": ["5-7 bullet points highlighting key features, each starting with an emoji"],
|
|
39
|
+
"useCases": ["3 use case examples showing who would use this and how"],
|
|
40
|
+
"targetAudience": "One sentence describing the target user"
|
|
41
|
+
}`;
|
|
42
|
+
try {
|
|
43
|
+
return await provider.generateJSON(prompt);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Fallback: generate from available data
|
|
47
|
+
return buildFallbackOverview(scan, deps, codeAnalysis, existingDescription);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function buildFallbackOverview(scan, deps, code, existingDescription) {
|
|
51
|
+
const lang = scan.languages[0]?.name || 'Unknown';
|
|
52
|
+
const frameworks = scan.frameworks;
|
|
53
|
+
const tagline = existingDescription || `A ${lang} project${frameworks.length ? ` built with ${frameworks[0]}` : ''}`;
|
|
54
|
+
const parts = [];
|
|
55
|
+
parts.push(`This project is built with ${lang}${frameworks.length ? ` using ${frameworks.join(', ')}` : ''}.`);
|
|
56
|
+
if (code.apiEndpoints.length > 0) {
|
|
57
|
+
parts.push(`It exposes ${code.apiEndpoints.length} API endpoint${code.apiEndpoints.length > 1 ? 's' : ''}.`);
|
|
58
|
+
}
|
|
59
|
+
if (code.cliCommands.length > 0) {
|
|
60
|
+
parts.push(`It provides ${code.cliCommands.length} CLI command${code.cliCommands.length > 1 ? 's' : ''}.`);
|
|
61
|
+
}
|
|
62
|
+
if (scan.hasTests)
|
|
63
|
+
parts.push('The project includes a test suite.');
|
|
64
|
+
if (scan.hasDocker)
|
|
65
|
+
parts.push('Docker support is included for containerized deployment.');
|
|
66
|
+
const features = [];
|
|
67
|
+
if (frameworks.length)
|
|
68
|
+
features.push(`Built with ${frameworks.join(', ')}`);
|
|
69
|
+
if (scan.hasTests)
|
|
70
|
+
features.push('Includes test suite');
|
|
71
|
+
if (scan.hasDocker)
|
|
72
|
+
features.push('Docker support');
|
|
73
|
+
if (scan.hasCICD)
|
|
74
|
+
features.push('CI/CD pipeline configured');
|
|
75
|
+
if (code.apiEndpoints.length > 0)
|
|
76
|
+
features.push(`${code.apiEndpoints.length} API endpoints`);
|
|
77
|
+
if (deps.requiresDatabase)
|
|
78
|
+
features.push('Database integration');
|
|
79
|
+
return {
|
|
80
|
+
tagline,
|
|
81
|
+
description: parts.join(' '),
|
|
82
|
+
keyFeatures: features.length > 0 ? features : [`Built with ${lang}`],
|
|
83
|
+
useCases: [`Use as a ${lang} ${frameworks[0] || 'application'}`],
|
|
84
|
+
targetAudience: `Developers working with ${lang}`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/generators/overview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CodeAnalysis } from '../analyzers/code-analyzer.js';
|
|
2
|
+
import type { ScanResult } from '../analyzers/file-scanner.js';
|
|
3
|
+
import type { DependencyAnalysis } from '../analyzers/dependency-analyzer.js';
|
|
4
|
+
import type { AIProvider } from '../providers/index.js';
|
|
5
|
+
export interface UsageExample {
|
|
6
|
+
title: string;
|
|
7
|
+
description: string;
|
|
8
|
+
language: string;
|
|
9
|
+
code: string;
|
|
10
|
+
}
|
|
11
|
+
export interface UsageResult {
|
|
12
|
+
examples: UsageExample[];
|
|
13
|
+
}
|
|
14
|
+
export interface APIDocEntry {
|
|
15
|
+
name: string;
|
|
16
|
+
signature: string;
|
|
17
|
+
description: string;
|
|
18
|
+
file: string;
|
|
19
|
+
}
|
|
20
|
+
export interface APIDocsResult {
|
|
21
|
+
entries: APIDocEntry[];
|
|
22
|
+
}
|
|
23
|
+
export declare function generateUsageSection(params: {
|
|
24
|
+
codeAnalysis: CodeAnalysis;
|
|
25
|
+
scan: ScanResult;
|
|
26
|
+
deps: DependencyAnalysis;
|
|
27
|
+
provider: AIProvider;
|
|
28
|
+
}): Promise<UsageResult>;
|
|
29
|
+
export declare function generateAPIDocs(params: {
|
|
30
|
+
codeAnalysis: CodeAnalysis;
|
|
31
|
+
provider: AIProvider;
|
|
32
|
+
}): Promise<APIDocsResult>;
|
|
33
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/generators/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;CACtB,GAAG,OAAO,CAAC,WAAW,CAAC,CA6EvB;AA+BD,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAwCzB"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export async function generateUsageSection(params) {
|
|
2
|
+
const { codeAnalysis, scan, deps, provider } = params;
|
|
3
|
+
// Build usage examples from detected patterns
|
|
4
|
+
const examples = [];
|
|
5
|
+
// Run command
|
|
6
|
+
if (deps.runCommand) {
|
|
7
|
+
examples.push({
|
|
8
|
+
title: 'Running the project',
|
|
9
|
+
description: 'Start the application:',
|
|
10
|
+
language: 'bash',
|
|
11
|
+
code: deps.runCommand,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// Test command
|
|
15
|
+
if (deps.testCommand) {
|
|
16
|
+
examples.push({
|
|
17
|
+
title: 'Running tests',
|
|
18
|
+
description: 'Execute the test suite:',
|
|
19
|
+
language: 'bash',
|
|
20
|
+
code: deps.testCommand,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
// API endpoints
|
|
24
|
+
if (codeAnalysis.apiEndpoints.length > 0) {
|
|
25
|
+
const curlExamples = codeAnalysis.apiEndpoints.slice(0, 3).map(ep => {
|
|
26
|
+
const method = ep.method === 'GET' ? '' : ` -X ${ep.method}`;
|
|
27
|
+
return `curl${method} http://localhost:3000${ep.path}`;
|
|
28
|
+
}).join('\n');
|
|
29
|
+
examples.push({
|
|
30
|
+
title: 'API Examples',
|
|
31
|
+
description: 'Making requests to the API:',
|
|
32
|
+
language: 'bash',
|
|
33
|
+
code: curlExamples,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// CLI commands
|
|
37
|
+
if (codeAnalysis.cliCommands.length > 0) {
|
|
38
|
+
const cmdExamples = codeAnalysis.cliCommands.slice(0, 3)
|
|
39
|
+
.map(cmd => `# ${cmd.description}\n${cmd.name}`)
|
|
40
|
+
.join('\n\n');
|
|
41
|
+
examples.push({
|
|
42
|
+
title: 'CLI Commands',
|
|
43
|
+
description: 'Available commands:',
|
|
44
|
+
language: 'bash',
|
|
45
|
+
code: cmdExamples,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// If we have very few examples, ask AI for more
|
|
49
|
+
if (examples.length < 2 && codeAnalysis.exports.length > 0) {
|
|
50
|
+
try {
|
|
51
|
+
const aiExamples = await generateAIUsageExamples(codeAnalysis, scan, provider);
|
|
52
|
+
examples.push(...aiExamples);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// AI generation failed, that's ok
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Ensure at least one example
|
|
59
|
+
if (examples.length === 0) {
|
|
60
|
+
const lang = scan.languages[0]?.name || 'Unknown';
|
|
61
|
+
examples.push({
|
|
62
|
+
title: 'Getting Started',
|
|
63
|
+
description: `Start using the project:`,
|
|
64
|
+
language: 'bash',
|
|
65
|
+
code: deps.runCommand || deps.installCommand || `# See documentation for usage instructions`,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return { examples };
|
|
69
|
+
}
|
|
70
|
+
async function generateAIUsageExamples(code, scan, provider) {
|
|
71
|
+
const exports = code.exports.slice(0, 5).map(e => `${e.type} ${e.signature} (${e.file})`).join('\n');
|
|
72
|
+
const prompt = `Generate 2 practical usage examples for this project.
|
|
73
|
+
|
|
74
|
+
Language: ${scan.languages[0]?.name || 'Unknown'}
|
|
75
|
+
Key exports:
|
|
76
|
+
${exports}
|
|
77
|
+
|
|
78
|
+
Return JSON:
|
|
79
|
+
{
|
|
80
|
+
"examples": [
|
|
81
|
+
{
|
|
82
|
+
"title": "Example title",
|
|
83
|
+
"description": "What this example demonstrates",
|
|
84
|
+
"language": "${scan.languages[0]?.name === 'Python' ? 'python' : 'typescript'}",
|
|
85
|
+
"code": "// actual code example"
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}`;
|
|
89
|
+
const result = await provider.generateJSON(prompt);
|
|
90
|
+
return result.examples || [];
|
|
91
|
+
}
|
|
92
|
+
export async function generateAPIDocs(params) {
|
|
93
|
+
const { codeAnalysis, provider } = params;
|
|
94
|
+
// Group exports by file
|
|
95
|
+
const entries = codeAnalysis.exports
|
|
96
|
+
.filter(exp => exp.type === 'function' || exp.type === 'class')
|
|
97
|
+
.slice(0, 20)
|
|
98
|
+
.map(exp => ({
|
|
99
|
+
name: exp.name,
|
|
100
|
+
signature: exp.signature,
|
|
101
|
+
description: '',
|
|
102
|
+
file: exp.file,
|
|
103
|
+
}));
|
|
104
|
+
// Try to get AI descriptions for the exports
|
|
105
|
+
if (entries.length > 0 && entries.length <= 15) {
|
|
106
|
+
try {
|
|
107
|
+
const prompt = `Generate brief descriptions (1 sentence each) for these exported functions/classes:
|
|
108
|
+
|
|
109
|
+
${entries.map(e => `- ${e.signature} (in ${e.file})`).join('\n')}
|
|
110
|
+
|
|
111
|
+
Return JSON:
|
|
112
|
+
{
|
|
113
|
+
"descriptions": {
|
|
114
|
+
"functionName": "Brief description of what it does"
|
|
115
|
+
}
|
|
116
|
+
}`;
|
|
117
|
+
const result = await provider.generateJSON(prompt);
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
if (result.descriptions[entry.name]) {
|
|
120
|
+
entry.description = result.descriptions[entry.name];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
// AI failed, leave descriptions empty
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { entries };
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/generators/usage.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { runGenerate } from './commands/generate.js';
|
|
4
|
+
import { runCLI } from './cli.js';
|
|
5
|
+
import { createRequire } from 'node:module';
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const pkg = require('../package.json');
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name('readme-ai')
|
|
11
|
+
.description('Generate production-quality READMEs from any codebase')
|
|
12
|
+
.version(pkg.version)
|
|
13
|
+
.argument('[repo]', 'Local path or GitHub URL (github:user/repo or https://github.com/...)')
|
|
14
|
+
.option('-o, --output <file>', 'Output file path', 'README.md')
|
|
15
|
+
.option('-p, --provider <name>', 'AI provider: anthropic | openai | gemini | ollama', 'anthropic')
|
|
16
|
+
.option('-m, --model <name>', 'Model name (depends on provider)')
|
|
17
|
+
.option('-t, --theme <name>', 'README theme: default | minimal | hacker | modern | academic', 'default')
|
|
18
|
+
.option('--no-diagram', 'Skip Mermaid architecture diagram')
|
|
19
|
+
.option('--no-badges', 'Skip badge generation')
|
|
20
|
+
.option('--no-api-docs', 'Skip API documentation section')
|
|
21
|
+
.option('--interactive', 'Run in interactive mode (asks questions about your project)')
|
|
22
|
+
.option('--action', 'Also generate a GitHub Action for auto-updating README')
|
|
23
|
+
.option('--overwrite', 'Overwrite existing README without asking')
|
|
24
|
+
.option('--dry-run', 'Print README to stdout instead of writing to file')
|
|
25
|
+
.action(async (repo, opts) => {
|
|
26
|
+
if (!repo && opts.interactive) {
|
|
27
|
+
await runCLI();
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
await runGenerate({
|
|
31
|
+
repo: repo || '.',
|
|
32
|
+
output: opts.output,
|
|
33
|
+
provider: opts.provider,
|
|
34
|
+
model: opts.model,
|
|
35
|
+
theme: opts.theme,
|
|
36
|
+
diagram: opts.diagram,
|
|
37
|
+
badges: opts.badges,
|
|
38
|
+
apiDocs: opts.apiDocs,
|
|
39
|
+
interactive: opts.interactive,
|
|
40
|
+
action: opts.action,
|
|
41
|
+
overwrite: opts.overwrite,
|
|
42
|
+
dryRun: opts.dryRun,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
program.parse();
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,QAAQ,CAAC,QAAQ,EAAE,uEAAuE,CAAC;KAC3F,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,CAAC;KAC9D,MAAM,CAAC,uBAAuB,EAAE,mDAAmD,EAAE,WAAW,CAAC;KACjG,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;KAChE,MAAM,CAAC,oBAAoB,EAAE,8DAA8D,EAAE,SAAS,CAAC;KACvG,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;KAC3D,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,eAAe,EAAE,gCAAgC,CAAC;KACzD,MAAM,CAAC,eAAe,EAAE,6DAA6D,CAAC;KACtF,MAAM,CAAC,UAAU,EAAE,wDAAwD,CAAC;KAC5E,MAAM,CAAC,aAAa,EAAE,0CAA0C,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,MAAM,EAAE,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,CAAC;YAChB,IAAI,EAAE,IAAI,IAAI,GAAG;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAmDlE"}
|