EdgeAIG's picture
download
raw
5.14 kB
/**
* Global flags for Effect CLI command trees. Global flags are parsed outside a
* single command's local flags and can apply to a command and its descendants.
*
* This module defines two kinds of global flags: action flags, which run an
* effect and stop normal command execution, and setting flags, which provide a
* parsed value to the command handler through the Effect context. It also
* defines the built-in help, version, shell-completion, and log-level flags
* used by `Command.run` and `Command.runWith`.
*
* @since 4.0.0
*/
import * as Context from "../../Context.ts";
import * as Effect from "../../Effect.ts";
import type { LogLevel as LogLevelType } from "../../LogLevel.ts";
import * as Option from "../../Option.ts";
import type * as Command from "./Command.ts";
import * as Flag from "./Flag.ts";
/**
* Context passed to action handlers.
*
* @category models
* @since 4.0.0
*/
export interface HandlerContext {
readonly command: Command.Command.Any;
readonly commandPath: ReadonlyArray<string>;
readonly version: string;
}
/**
* Action flag: side effect + exit (--help, --version, --completions).
*
* @category models
* @since 4.0.0
*/
export interface Action<A> {
readonly _tag: "Action";
readonly flag: Flag.Flag<A>;
readonly run: (value: A, context: HandlerContext) => Effect.Effect<void>;
}
/**
* Setting flag: configure command handler's environment (--log-level, --config).
*
* @category models
* @since 4.0.0
*/
export interface Setting<Id extends string, A> extends Context.Service<Setting.Identifier<Id>, A> {
readonly _tag: "Setting";
readonly id: Id;
readonly flag: Flag.Flag<A>;
}
/**
* Namespace containing type helpers for global setting flags.
*
* @since 4.0.0
*/
export declare namespace Setting {
/**
* Type-level service identifier used by `Setting` global flags for the
* parsed value associated with a setting id.
*
* @category models
* @since 4.0.0
*/
type Identifier<Id extends string> = `effect/unstable/cli/GlobalFlag/${Id}`;
}
/**
* Global flag discriminated union.
*
* @category models
* @since 4.0.0
*/
export type GlobalFlag<A> = Action<A> | Setting<any, A>;
/**
* Creates an Action flag that performs a side effect and exits.
*
* @category constructors
* @since 4.0.0
*/
export declare const action: <A>(options: {
readonly flag: Flag.Flag<A>;
readonly run: (value: A, context: HandlerContext) => Effect.Effect<void>;
}) => Action<A>;
/**
* Creates a Setting flag that configures the command handler's environment.
*
* @category constructors
* @since 4.0.0
*/
export declare const setting: <const Id extends string>(id: Id) => <A>(options: {
readonly flag: Flag.Flag<A>;
}) => Setting<Id, A>;
/**
* Defines the `--help` / `-h` global flag, which shows help documentation for the
* active command path.
*
* @see {@link BuiltIns} for the default list containing this flag
* @see {@link action} for defining custom action global flags
*
* @category references
* @since 4.0.0
*/
export declare const Help: Action<boolean>;
/**
* Defines the global action flag for showing command version information.
*
* **When to use**
*
* Use to add a built-in `--version / -v` flag to a command runner.
*
* @category references
* @since 4.0.0
*/
export declare const Version: Action<boolean>;
/**
* Defines the `--completions` global flag, which prints a shell completion script for
* the given shell.
*
* **Details**
*
* Accepted values are `bash`, `zsh`, `fish`, and `sh`; `sh` is normalized to
* `bash`.
*
* @category references
* @since 4.0.0
*/
export declare const Completions: Action<Option.Option<"bash" | "zsh" | "fish">>;
/**
* Defines the global setting flag for command log level.
*
* **When to use**
*
* Use to add a built-in `--log-level` option that configures the minimum log
* level for the command.
*
* @category references
* @since 4.0.0
*/
export declare const LogLevel: Setting<"log-level", Option.Option<LogLevelType>>;
/**
* Built-in global flags in default precedence order.
*
* **When to use**
*
* Use when extending or inspecting the default global-flag set that
* `Command.runWith` prepends before user-defined global flags.
*
* **Details**
*
* The built-ins are `Help`, `Version`, `Completions`, and `LogLevel`.
* `Command.runWith` prepends these built-ins when collecting and parsing global
* flags.
*
* **Gotchas**
*
* Action flags are processed in active flag order and the first present action
* exits, so this array controls built-in action precedence.
*
* @see {@link Help} for the help action flag
* @see {@link Version} for the version action flag
* @see {@link Completions} for the shell-completions action flag
* @see {@link LogLevel} for the built-in log-level setting flag
*
* @category references
* @since 4.0.0
*/
export declare const BuiltIns: ReadonlyArray<GlobalFlag<any>>;
/**
* Built-in setting context identifiers.
*
* @category models
* @since 4.0.0
*/
export type BuiltInSettingContext = Setting.Identifier<"log-level">;
//# sourceMappingURL=GlobalFlag.d.ts.map

Xet Storage Details

Size:
5.14 kB
·
Xet hash:
abecda34055d6f60a3906beea4784e1134c1d4a2c13f35c0e471a25fb94af8c9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.