ExternalRuntimeTransport.Command (ExternalRuntimeTransport v0.1.0)

Copy Markdown View Source

Generic transport-level command invocation.

This struct stays below CLI-domain concerns. It only carries the executable, argv, and launch-time process options needed by the execution-surface substrate.

Summary

Functions

Returns the executable and argv as a flat list.

Merges environment variables into the invocation.

Builds a normalized transport command.

Adds or replaces one environment variable.

Validates the generic transport command contract.

Types

env_key()

@type env_key() :: String.t()

env_map()

@type env_map() :: %{optional(env_key()) => env_value()}

env_value()

@type env_value() :: String.t()

t()

@type t() :: %ExternalRuntimeTransport.Command{
  args: [String.t()],
  clear_env?: boolean(),
  command: String.t(),
  cwd: String.t() | nil,
  env: env_map(),
  user: user()
}

user()

@type user() :: String.t() | nil

Functions

argv(command)

@spec argv(t()) :: [String.t()]

Returns the executable and argv as a flat list.

merge_env(command, env)

@spec merge_env(t(), map()) :: t()

Merges environment variables into the invocation.

new(command, args \\ [], opts \\ [])

@spec new(String.t(), [String.t()] | keyword(), keyword()) :: t()

Builds a normalized transport command.

put_env(command, key, value)

@spec put_env(t(), String.t() | atom(), String.t() | atom() | number() | boolean()) ::
  t()

Adds or replaces one environment variable.

validate(command)

@spec validate(t()) ::
  :ok
  | {:error, {:invalid_command, term()}}
  | {:error, {:invalid_args, term()}}
  | {:error, {:invalid_cwd, term()}}
  | {:error, {:invalid_env, term()}}
  | {:error, {:invalid_clear_env, term()}}
  | {:error, {:invalid_user, term()}}

Validates the generic transport command contract.