mirror of
https://github.com/anomalyco/opencode.git
synced 2026-09-04 03:54:29 +00:00
22 lines
753 B
TypeScript
22 lines
753 B
TypeScript
import { Effect } from "effect"
|
|
|
|
export function withEnv<A, E, R>(variables: Record<string, string | undefined>, effect: () => Effect.Effect<A, E, R>) {
|
|
return Effect.acquireUseRelease(
|
|
Effect.sync(() => {
|
|
const previous = Object.fromEntries(Object.keys(variables).map((key) => [key, process.env[key]]))
|
|
Object.entries(variables).forEach(([key, value]) => {
|
|
if (value === undefined) delete process.env[key]
|
|
else process.env[key] = value
|
|
})
|
|
return previous
|
|
}),
|
|
effect,
|
|
(previous) =>
|
|
Effect.sync(() => {
|
|
Object.entries(previous).forEach(([key, value]) => {
|
|
if (value === undefined) delete process.env[key]
|
|
else process.env[key] = value
|
|
})
|
|
}),
|
|
)
|
|
}
|