greybel-js
Version:
Transpiler/Interpreter for GreyScript. (GreyHack)
41 lines • 1.66 kB
JavaScript
import { InGameSession } from './execute/in-game/session.js';
import { MockSession } from './execute/mock/session.js';
import { SessionEnvironmentType } from './execute/types.js';
import { configurationManager } from './helper/configuration-manager.js';
import { EnvironmentVariablesManager } from './helper/env-mapper.js';
import { parseFileExtensions } from './helper/parse-file-extensions.js';
import { VersionManager } from './helper/version-manager.js';
export default async function execute(target, options = {}) {
const fileExtensions = parseFileExtensions(options.fileExtensions);
if (fileExtensions) {
configurationManager.set('fileExtensions', fileExtensions);
}
const envMapper = new EnvironmentVariablesManager();
const envType = options.envType?.toLocaleLowerCase();
let session;
envMapper.load(options.envFiles, options.envVars);
if (envType === SessionEnvironmentType.Mock) {
session = new MockSession({
target,
envMapper,
debugMode: options.debugMode,
seed: options.seed
});
}
else if (envType === SessionEnvironmentType.Ingame) {
session = new InGameSession({
target,
envMapper,
debugMode: options.debugMode,
programName: options.programName,
port: options.port
});
await VersionManager.triggerContextAgentHealthcheck();
}
else {
throw new Error('Invalid environment type. Please use "Mock" or "In-Game".');
}
await session.prepare();
return await session.run(options.params);
}
//# sourceMappingURL=execute.js.map