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, claude) down to “nice-to-have” (specific multiplexer available). Any hard failure short-circuits subsequent dependent checks — no point probing the claude version if `claude` isn’t on PATH.
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 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 5s each).
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
// 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 (e.g. tmux
// missing, we'll fall through to screen or setsid).
WARN
// FAIL means a hard prerequisite failed and the supervisor cannot run.
FAIL
)
func (Severity) String¶
func (s Severity) String() string
String returns a human-friendly severity label.
Generated by gomarkdoc