diff options
Diffstat (limited to 'tree-sitter/dsk/dsk-cli/src/index.ts')
-rw-r--r-- | tree-sitter/dsk/dsk-cli/src/index.ts | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tree-sitter/dsk/dsk-cli/src/index.ts b/tree-sitter/dsk/dsk-cli/src/index.ts new file mode 100644 index 0000000..42c75c5 --- /dev/null +++ b/tree-sitter/dsk/dsk-cli/src/index.ts @@ -0,0 +1,80 @@ +#!/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(); |