1#!/usr/bin/env node
2
3/**
4 * @since 0.6.0
5 */
6import * as NodeRuntime from "@effect/platform-node/NodeRuntime"
7import * as NodeServices from "@effect/platform-node/NodeServices"
8import * as Effect from "effect/Effect"
9import * as Layer from "effect/Layer"
10import { cli } from "./CLI.ts"
11import * as Configuration from "./Configuration.ts"
12import * as Domain from "./Domain.ts"
13
14const MainLayer = Configuration.configProviderLayer.pipe(
15 Layer.provideMerge(Layer.mergeAll(Domain.Process.layer, NodeServices.layer))
16)
17
18Effect.sync(() => process.argv.slice(2)).pipe(
19 Effect.flatMap(cli),
20 Effect.provide(MainLayer),
21 NodeRuntime.runMain
22)