UNPKG

@tucmc/hazel

Version:
96 lines (95 loc) 3.96 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.runScript = void 0; const fs = __importStar(require("fs")); const path_1 = __importDefault(require("path")); const process = __importStar(require("process")); const ts = __importStar(require("typescript")); const lib_1 = require("../../lib"); const header_1 = require("./header"); const version_1 = require("./version"); const runScript = (fpath, options) => { let script; if (options.string) { script = fpath; } else { let data; try { data = fs.readFileSync(fpath); } catch (_) { console.log(`${'\u001b[31m'}Unable to open script file ${lib_1.ConsoleColour.BOLD}${fpath}${lib_1.ConsoleColour.RESET}`); return; } script = data.toString(); } console.log('Transpiling source code..'); const property = (0, header_1.parseHeader)(script); if (!property) { console.log(`${'\u001b[31m'}Unable to transpile source code (maybe file header is invalid)`); return; } if (property.version !== 'any' && !options.force) { const appVersionWeight = (0, version_1.getVersionWeight)(lib_1.VERSION); const versionObj = (0, version_1.parseVersion)(property.version); if (!versionObj) { console.log(`${'\u001b[31m'}Error: Unable to parse version operator`); return; } const userVersionWeight = (0, version_1.getVersionWeight)(versionObj.number); if (!(0, version_1.compareWithOp)(appVersionWeight, userVersionWeight, versionObj.op)) { console.log(`${'\u001b[31m'}Error: This script requires hazel runtime version ${property.version}. (current ${lib_1.VERSION})\nHint: try applying -f, --force flag to force the script to run.`); return; } } if (options.force) { console.log(`${lib_1.ConsoleColour.YELLOW}Warning: forcing version exclusive script to run on incompatible runtime might cause a destructive error.`); } if (property.env_file) { process.env.CUSTOM_ENV_PATH = property.env_file; } if (property.skip_yes_no) { process.env.SKIP_YESNO = 'yes'; } let cleaned = script.replace(new RegExp('hazel.', 'g'), ''); cleaned = cleaned.replace(/^.*import.*$/gm, ''); if (!process.argv[0]) { return; } const nodeExe = process.argv[0]; const modulePath = path_1.default.resolve(nodeExe, '../..', 'lib/node_modules/@tucmc/hazel'); const libPath = path_1.default.join(modulePath, 'dist/lib/index'); const importHeading = ` Object.assign(global, require('${libPath}')) `; const cleanedJs = ts.transpile(cleaned); eval(importHeading + cleanedJs); }; exports.runScript = runScript;