UNPKG

fj-js

Version:

Facilitation of JavaScript (FJ) - A simplified, powerful JS-based scripting language.

60 lines (50 loc) 1.52 kB
#!/usr/bin/env node const fs = require("fs") const vm = require("vm") const path = require("path") const { parseFJ } = require("../lib/parser") const interpreter = require("../lib/interpreter") const args = process.argv.slice(2) const command = args[0] // Mostrar versión if (command === "--versions") { console.log("FJ Language v1.3.0") console.log("Node.js", process.version) console.log("Platform:", process.platform) process.exit() } // Instalación de módulos externos con: fj install nombre if (command === "install" && args[1]) { const pkg = args[1] console.log(`Instalando paquete: ${pkg}...`) const { execSync } = require("child_process") try { execSync(`npm install ${pkg}`, { stdio: "inherit" }) console.log(`✅ Paquete '${pkg}' instalado correctamente.`) } catch (err) { console.error("Error al instalar el paquete:", err.message) } process.exit() } // Ejecutar archivo .fj if (!command || !command.endsWith(".fj")) { console.log("Uso: fj archivo.fj") process.exit() } const filePath = path.resolve(process.cwd(), command) if (!fs.existsSync(filePath)) { console.error("❌ Archivo no encontrado:", filePath) process.exit() } // Crear contexto seguro const context = vm.createContext(interpreter) async function ejecutarFJ() { try { const raw = fs.readFileSync(filePath, "utf-8") const jsCode = parseFJ(raw) await vm.runInContext(jsCode, context) } catch (err) { console.error("Error ejecutando FJ:", err.message) } } ejecutarFJ()