nadle
Version:
A modern, type-safe task runner for Node.js inspired by the awesome Gradle build tool
34 lines (33 loc) • 1.36 kB
JavaScript
import {
Nadle,
taskRegistry
} from "./chunk-U7OSCGJU.js";
// src/core/worker.ts
import Path from "path";
import { threadId } from "worker_threads";
var worker_default = async ({ name, port, options, env: originalEnv }) => {
const nadle = new Nadle(options);
await nadle.registerTask();
const task = taskRegistry.getByName(name);
const { optionsResolver } = task;
const context = { nadle };
const taskOptions = typeof optionsResolver === "function" ? optionsResolver(context) : optionsResolver;
port.postMessage({ threadId, type: "start", taskName: name });
await new Promise((resolve) => setImmediate(resolve));
await new Promise((resolve) => process.nextTick(resolve));
const taskConfig = task.configResolver({ context });
const taskEnv = Object.fromEntries(Object.entries(taskConfig.env ?? {}).map(([key, val]) => [key, String(val)]));
const workingDir = taskConfig.workingDir ? Path.resolve(taskConfig.workingDir) : process.cwd();
Object.assign(process.env, { ...originalEnv, ...taskEnv });
await task.run({ options: taskOptions, context: { ...context, workingDir } });
for (const [key] of Object.entries(taskEnv)) {
delete process.env[key];
if (Object.hasOwn(originalEnv, key)) {
process.env[key] = originalEnv[key];
}
}
};
export {
worker_default as default
};
//# sourceMappingURL=worker.js.map