go-process/specs/exec.md

68 lines
2.7 KiB
Markdown

# exec
**Import:** `dappco.re/go/core/process/exec`
**Files:** 3
## Types
### `Options`
`struct`
Execution settings stored on `Cmd`.
Fields:
- `Dir string`: Working directory.
- `Env []string`: Additional environment entries appended to `os.Environ()`.
- `Stdin io.Reader`: Reader wired to command stdin.
- `Stdout io.Writer`: Writer wired to command stdout.
- `Stderr io.Writer`: Writer wired to command stderr.
### `Cmd`
`struct`
Fluent wrapper around `os/exec.Cmd`.
Exported fields:
- None.
### `Logger`
`interface`
Structured logger contract used by the package.
Methods:
- `Debug(msg string, keyvals ...any)`: Debug-level event logging.
- `Error(msg string, keyvals ...any)`: Error-level event logging.
### `NopLogger`
`struct`
No-op logger implementation used as the package default.
Exported fields:
- None.
## Functions
### Package Functions
- `func Command(ctx context.Context, name string, args ...string) *Cmd`: Creates a `Cmd` with the supplied command name, arguments, and context.
- `func RunQuiet(ctx context.Context, name string, args ...string) error`: Runs a command with stdout suppressed, captures stderr into a buffer, and wraps any failure with `core.E("RunQuiet", ...)`.
- `func SetDefaultLogger(l Logger)`: Replaces the package-level default logger. Passing `nil` resets it to `NopLogger`.
- `func DefaultLogger() Logger`: Returns the current package-level default logger.
### `Cmd` Methods
- `func (c *Cmd) WithDir(dir string) *Cmd`: Sets the working directory on the stored options and returns the same command for chaining.
- `func (c *Cmd) WithEnv(env []string) *Cmd`: Sets extra environment variables and returns the same command for chaining.
- `func (c *Cmd) WithStdin(r io.Reader) *Cmd`: Sets stdin and returns the same command for chaining.
- `func (c *Cmd) WithStdout(w io.Writer) *Cmd`: Sets stdout and returns the same command for chaining.
- `func (c *Cmd) WithStderr(w io.Writer) *Cmd`: Sets stderr and returns the same command for chaining.
- `func (c *Cmd) WithLogger(l Logger) *Cmd`: Sets a per-command logger that overrides the package default.
- `func (c *Cmd) Run() error`: Builds the underlying `exec.Cmd`, logs a debug event, runs the command, and wraps failures with command context.
- `func (c *Cmd) Output() ([]byte, error)`: Builds the underlying `exec.Cmd`, logs a debug event, returns stdout bytes, and wraps failures.
- `func (c *Cmd) CombinedOutput() ([]byte, error)`: Builds the underlying `exec.Cmd`, logs a debug event, returns combined stdout and stderr bytes, and wraps failures while preserving the output bytes from `exec.Cmd.CombinedOutput`.
### `NopLogger` Methods
- `func (NopLogger) Debug(string, ...any)`: Discards debug messages.
- `func (NopLogger) Error(string, ...any)`: Discards error messages.