Download packages/cli/src/framework/spec.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.31 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/cli/src/framework/spec.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/cli/src/framework/spec.ts
-
curl -L -o spec.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/cli/src/framework/spec.ts
1.31 kB
| import * as Command from "effect/unstable/cli/Command" | |
| type Options<Config extends Command.Command.Config, Commands extends ReadonlyArray<Any>> = { | |
| readonly description?: string | |
| readonly params?: Config | |
| readonly commands?: Commands | |
| } | |
| export interface Node< | |
| Name extends string, | |
| Spec extends Command.Command<Name, any, any, any, any>, | |
| Commands extends Children, | |
| > { | |
| readonly name: Name | |
| readonly spec: Spec | |
| readonly commands: Commands | |
| } | |
| export type Any = Node<string, Command.Command<any, any, any, any, any>, Children> | |
| export type Children = Readonly<Record<string, Any>> | |
| export function make< | |
| const Name extends string, | |
| const Config extends Command.Command.Config = {}, | |
| const Commands extends ReadonlyArray<Any> = [], | |
| >(name: Name, options: Options<Config, Commands> = {}) { | |
| const command = Command.make(name, options.params ?? ({} as Config)) | |
| const spec = options.description ? command.pipe(Command.withDescription(options.description)) : command | |
| return { | |
| name, | |
| spec, | |
| commands: Object.fromEntries( | |
| (options.commands ?? []).map((command) => [command.name, command]), | |
| ) as ChildrenOf<Commands>, | |
| } | |
| } | |
| type ChildrenOf<Commands extends ReadonlyArray<Any>> = { | |
| readonly [Node in Commands[number] as Node["name"]]: Node | |
| } | |
| export * as Spec from "./spec" | |