about summary refs log tree commit diff stats
path: root/tree-sitter/dsk/dsk-cli/src/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tree-sitter/dsk/dsk-cli/src/index.ts')
-rw-r--r--tree-sitter/dsk/dsk-cli/src/index.ts80
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();