@graphikartistry/cursor-doc-automation
Version:
Cursor IDE extension for autonomous documentation and ticket management
89 lines (81 loc) • 2.86 kB
text/typescript
import { Command } from 'commander';
import { DocumentationService } from './services/documentationService';
import { GitHubClient } from './github/githubClient';
import { JiraClient } from './jira/jiraClient';
import { FuelixClient } from './fuelix/fuelixClient';
import { loadConfig } from './config';
import * as fs from 'fs';
import * as path from 'path';
const program = new Command();
program
.name('doc-automation')
.description('CLI tool for autonomous documentation and ticket management')
.version('1.0.0');
program
.command('analyze')
.description('Analyze a file and generate documentation')
.argument('<file>', 'File to analyze')
.action(async (file: string) => {
try {
const config = loadConfig();
const content = fs.readFileSync(file, 'utf-8');
const service = new DocumentationService(
new GitHubClient(config.github.token),
new JiraClient(config.jira.token),
new FuelixClient()
);
const analysis = await service.analyzeChanges(content);
console.log('Analysis:', analysis);
} catch (error: any) {
console.error('Error:', error.message || 'An unknown error occurred');
process.exit(1);
}
});
program
.command('create-pr')
.description('Create a documentation PR')
.argument('<file>', 'File to document')
.action(async (file: string) => {
try {
const config = loadConfig();
const content = fs.readFileSync(file, 'utf-8');
const service = new DocumentationService(
new GitHubClient(config.github.token),
new JiraClient(config.jira.token),
new FuelixClient()
);
const analysis = await service.analyzeChanges(content);
const prUrl = await service.createDocumentationPR(analysis);
console.log('PR created:', prUrl);
} catch (error: any) {
console.error('Error:', error.message || 'An unknown error occurred');
process.exit(1);
}
});
interface TicketOptions {
prUrl?: string;
}
program
.command('create-ticket')
.description('Create a Jira ticket')
.argument('<file>', 'File to document')
.option('-p, --pr-url <url>', 'Related PR URL')
.action(async (file: string, options: TicketOptions) => {
try {
const config = loadConfig();
const content = fs.readFileSync(file, 'utf-8');
const service = new DocumentationService(
new GitHubClient(config.github.token),
new JiraClient(config.jira.token),
new FuelixClient()
);
const analysis = await service.analyzeChanges(content);
await service.createJiraBacklogItem(analysis, options.prUrl);
console.log('Jira ticket created successfully');
} catch (error: any) {
console.error('Error:', error.message || 'An unknown error occurred');
process.exit(1);
}
});
program.parse();