#!/usr/bin/env node /** * CLI Wrapper Script * * This script serves as a wrapper for the Brainy CLI, ensuring that command-line arguments * are properly passed to the CLI when invoked through npm scripts. */ import { spawn } from 'child_process' import { fileURLToPath } from 'url' import { dirname, join } from 'path' import fs from 'fs' // Get the directory of the current module const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) // Path to the actual CLI script const cliPath = join(__dirname, 'dist', 'cli.js') // Check if the CLI script exists if (!fs.existsSync(cliPath)) { console.error(`Error: CLI script not found at ${cliPath}`) console.error('Make sure you have built the project with "npm run build"') process.exit(1) } // Special handling for version flags if (process.argv.includes('--version') || process.argv.includes('-V')) { // Read version directly from package.json to ensure it's always correct try { const packageJsonPath = join(__dirname, 'package.json') const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) console.log(packageJson.version) process.exit(0) } catch (error) { console.error('Error loading version information:', error.message) process.exit(1) } } // Forward all arguments to the CLI script const args = process.argv.slice(2) // Check if npm is passing --force flag // When npm runs with --force, it sets the npm_config_force environment variable if (process.env.npm_config_force === 'true' && args.includes('clear') && !args.includes('--force') && !args.includes('-f')) { args.push('--force') } const cli = spawn('node', [cliPath, ...args], { stdio: 'inherit' }) cli.on('close', (code) => { process.exit(code) })