UNPKG

@sigyl-dev/cli

Version:

Official Sigyl CLI for installing and managing MCP packages. Zero-config installation for public packages, secure API-based authentication.

67 lines • 3.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.scanAndGenerate = scanAndGenerate; const chalk_1 = __importDefault(require("chalk")); const node_path_1 = require("node:path"); const node_fs_1 = require("node:fs"); const ora_1 = __importDefault(require("ora")); const express_scanner_1 = require("../lib/express-scanner"); const mcp_generator_1 = require("../lib/mcp-generator"); const logger_1 = require("../logger"); async function scanAndGenerate(directory, options) { const spinner = (0, ora_1.default)("Scanning Express application...").start(); try { // Resolve directory path const targetDir = (0, node_path_1.resolve)(process.cwd(), directory); if (!(0, node_fs_1.existsSync)(targetDir)) { throw new Error(`Directory not found: ${targetDir}`); } (0, logger_1.verboseLog)(`Scanning directory: ${targetDir}`); (0, logger_1.verboseLog)(`Output directory: ${options.outDir}`); (0, logger_1.verboseLog)(`Server language: ${options.serverLanguage}`); // Scan for Express endpoints spinner.text = "Detecting Express routes..."; const scanner = new express_scanner_1.ExpressScanner(targetDir); const endpoints = await scanner.scanForEndpoints(options.framework); if (endpoints.length === 0) { spinner.fail("No Express endpoints found!"); console.log(chalk_1.default.yellow("Make sure your Express app has route definitions like:")); console.log(chalk_1.default.gray(" app.get('/api/users', handler)")); console.log(chalk_1.default.gray(" app.post('/api/orders', handler)")); return; } spinner.succeed(`Found ${endpoints.length} endpoints`); // Display found endpoints console.log(chalk_1.default.blue("\nšŸ“ Discovered endpoints:")); for (const endpoint of endpoints) { console.log(chalk_1.default.green(` ${endpoint.method.toUpperCase()} ${endpoint.path}`)); if (endpoint.description) { console.log(chalk_1.default.gray(` ${endpoint.description}`)); } } // Generate MCP server spinner.start("Generating MCP server..."); const generator = new mcp_generator_1.MCPGenerator(options.outDir, options.serverLanguage); await generator.generateFromEndpoints(endpoints, { appPort: options.port, ...options.config }); spinner.succeed("MCP server generated successfully!"); console.log(chalk_1.default.green("\nšŸŽ‰ Generated files:")); console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "sigyl.yaml")} - MCP configuration`)); console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "server.ts")} - MCP server`)); console.log(chalk_1.default.gray(` ${(0, node_path_1.join)(options.outDir, "tools/")} - Tool handlers`)); console.log(chalk_1.default.blue("\nšŸš€ Next steps:")); console.log(chalk_1.default.gray(` cd ${options.outDir}`)); console.log(chalk_1.default.gray(" npm install")); console.log(chalk_1.default.gray(" sigyl dev")); } catch (error) { spinner.fail("Scan failed"); throw error; } } //# sourceMappingURL=scan.js.map