#!/usr/bin/env node /** * DSK - DSL Development Kit * Command-line tool for creating Domain-Specific Languages with Tree-sitter */ import { Command } from 'commander'; import chalk from 'chalk'; import { readFileSync } from 'fs'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; // Get package.json for version info const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const packagePath = join(__dirname, '..', 'package.json'); const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8')); const program = new Command(); // Configure main command program .name('dsk') .description('DSL Development Kit - Streamline Domain-Specific Language creation') .version(packageJson.version); // Welcome message for help program.on('--help', () => { console.log(''); console.log(chalk.blue('Getting Started:')); console.log(' $ dsk new my-language --interactive'); console.log(' $ cd my-language'); console.log(' $ dsk dev'); console.log(''); console.log(chalk.yellow('Learn more at: https://github.com/your-org/dsk')); }); // Import and register commands import { createNewCommand } from './commands/new.js'; import { createBuildCommand } from './commands/build.js'; import { createTestCommand } from './commands/test.js'; import { createDevCommand } from './commands/dev.js'; import { createHighlightCommand } from './commands/highlight.js'; import { createPackageCommand } from './commands/package.js'; import { createSelfPackageCommand } from './commands/self.js'; const newCommand = createNewCommand(); const buildCommand = createBuildCommand(); const testCommand = createTestCommand(); const devCommand = createDevCommand(); const highlightCommand = createHighlightCommand(); const packageCommand = createPackageCommand(); const selfPackageCommand = createSelfPackageCommand(); program.addCommand(newCommand); program.addCommand(buildCommand); program.addCommand(testCommand); program.addCommand(devCommand); program.addCommand(highlightCommand); program.addCommand(packageCommand); program.addCommand(selfPackageCommand); // TODO: Import remaining commands // import { devCommand } from './commands/dev.js'; // import { testCommand } from './commands/test.js'; // import { highlightCommand } from './commands/highlight.js'; // import { packageCommand } from './commands/package.js'; // program.addCommand(devCommand); // program.addCommand(testCommand); // program.addCommand(highlightCommand); // program.addCommand(packageCommand); // legacy placeholder removed; real dev command registered above // Parse command line arguments program.parse();