import { Effect, FileSystem, Layer, Path } from "effect";
import { loadCliConfig, loadCliConfigFile, saveCliConfig } from "./io.ts";
import { CliConfigStore } from "./cli-config.service.ts";
const makeCliConfigStore = Effect.gen(function* () {
const fs = yield* FileSystem.FileSystem;
const path = yield* Path.Path;
const providePlatform = (
effect: Effect.Effect,
): Effect.Effect =>
effect.pipe(
Effect.provideService(FileSystem.FileSystem, fs),
Effect.provideService(Path.Path, path),
);
return CliConfigStore.of({
load: (cwd, options) => providePlatform(loadCliConfig(cwd, options)),
loadFile: (filePath) => providePlatform(loadCliConfigFile(filePath)),
save: (options) => providePlatform(saveCliConfig(options)),
});
});
export const cliConfigStoreLayer = Layer.effect(CliConfigStore, makeCliConfigStore);