doctor#
import "github.com/jbcom/radioactive-ralph/internal/doctor"
Package doctor runs radioactive-ralph’s environment health checks.
`radioactive_ralph doctor` iterates every check, prints the outcome, and exits 0 if every hard-required check passed (soft warnings don’t fail). This is the first thing operators run when something’s off; output is optimised for remediation (each failure carries a one-line suggested fix) rather than diagnosis depth.
Checks are ordered from “fundamental prerequisites” (git, provider CLIs) down to “nice-to-have” (service-mode ergonomics). Hard prerequisites stay hard failures; optional providers and auth gaps surface as warnings so the operator can still use the providers that are installed and logged in.
Index#
type Check#
Check is one diagnostic step’s output.
type Check struct {
Name string // short label shown in the report ("git version")
Severity Severity // OK | WARN | FAIL
Detail string // one-line status (e.g. "git 2.42.0 detected")
Remediate string // one-line suggested fix if not OK
}
type Option#
Option configures Run.
type Option func(*RunOptions)
func WithCommandTimeout#
func WithCommandTimeout(d time.Duration) Option
WithCommandTimeout overrides the per-command timeout.
func WithMinClaudeVersion#
func WithMinClaudeVersion(v string) Option
WithMinClaudeVersion pins the minimum claude CLI version expected.
func WithMinGitVersion#
func WithMinGitVersion(v string) Option
WithMinGitVersion pins the minimum git version expected.
func WithRunner#
func WithRunner(fn func(ctx context.Context, name string, args ...string) (string, error)) Option
WithRunner lets tests override exec.CommandContext behaviour. The runner receives the command name + args, returns stdout or error.
type Report#
Report aggregates check outcomes plus a summary.
type Report struct {
Checks []Check
OKCount int
WarnCount int
FailCount int
}
func Run#
func Run(ctx context.Context, opts ...Option) Report
Run executes every check and returns a consolidated report. ctx is used to bound each subprocess invocation (default 15s each). Checks run concurrently and are reported in a stable order.
func (Report) Passed#
func (r Report) Passed() bool
Passed reports whether the overall doctor run succeeded (zero FAILs).
func (Report) WriteText#
func (r Report) WriteText(w io.Writer)
WriteText writes a human-friendly report to w. Intended for the CLI `radioactive_ralph doctor` subcommand.
type RunOptions#
RunOptions controls the checks. Zero value runs all checks.
type RunOptions struct {
// MinClaudeVersion is the pinned minimum Claude Code version in
// semver (e.g. "2.1.89"). Empty means "don't pin."
MinClaudeVersion string
// MinGitVersion is the pinned minimum git version (e.g. "2.5.0").
// Empty means "don't pin."
MinGitVersion string
// CommandTimeout bounds each external diagnostic command.
CommandTimeout time.Duration
// contains filtered or unexported fields
}
type Severity#
Severity classifies a check outcome. Hard failures (FAIL) cause `radioactive_ralph doctor` to exit non-zero. Soft failures (WARN) are printed but don’t gate execution.
type Severity int
const (
// OK means the check passed.
OK Severity = iota
// WARN means an issue was detected but is non-fatal.
WARN
// FAIL means a hard prerequisite failed and the runtime cannot run.
FAIL
)
func (Severity) String#
func (s Severity) String() string
String returns a human-friendly severity label.
Generated by gomarkdoc