refakts
Version:
TypeScript refactoring tool built for AI coding agents to perform precise refactoring operations via command line instead of requiring complete code regeneration.
102 lines • 3.93 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.HelpContentExtractor = void 0;
const child_process_1 = require("child_process");
const util_1 = require("util");
const path = __importStar(require("path"));
const execAsync = (0, util_1.promisify)(child_process_1.exec);
class HelpContentExtractor {
async extractHelpContent() {
try {
const { stdout } = await execAsync('ts-node src/cli.ts --help', {
cwd: path.join(__dirname, '..', '..')
});
return this.parseCommands(stdout);
}
catch {
return 'Error: Could not generate help output';
}
}
parseCommands(helpOutput) {
const lines = helpOutput.split('\n');
const commandsStartIndex = this.findCommandsStart(lines);
if (commandsStartIndex === -1)
return 'No refactoring commands available';
const commands = this.extractCommandLines(lines, commandsStartIndex);
return this.formatCommands(commands);
}
findCommandsStart(lines) {
return lines.findIndex(line => line.trim() === 'Commands:');
}
extractCommandLines(lines, startIndex) {
const commands = [];
const currentCommand = this.processLines(lines, startIndex, commands);
if (currentCommand)
commands.push(currentCommand);
return commands;
}
processLines(lines, startIndex, commands) {
let currentCommand = '';
for (let i = startIndex + 1; i < lines.length; i++) {
const line = lines[i].trim();
if (this.shouldStopProcessing(line))
break;
currentCommand = this.processLine(line, currentCommand, commands);
}
return currentCommand;
}
shouldStopProcessing(line) {
return !line || line.includes('help [command]');
}
processLine(line, currentCommand, commands) {
if (line.includes('[options]') || line.includes('<target>')) {
if (currentCommand)
commands.push(currentCommand);
return line;
}
else if (currentCommand && line && !line.includes('-h, --help')) {
return currentCommand + ' ' + line;
}
return currentCommand;
}
formatCommands(commands) {
return commands.length > 0
? commands.map(cmd => '- ' + cmd).join('\n')
: 'No refactoring commands available';
}
}
exports.HelpContentExtractor = HelpContentExtractor;
//# sourceMappingURL=HelpContentExtractor.js.map