Tags: uhryniuk/godo
Tags
feat(cmd): resolve command to absolute path before sending to daemon exec.LookPath runs in the CLI process, which has the user's current shell PATH (virtualenvs, nvm, pyenv shims, etc.). The resolved absolute path is what gets stored in the job registry and passed to pty.Start, so the daemon never needs to re-resolve it against its own (potentially stale) PATH. Fails fast at the CLI with a clear error if the command isn't found, rather than surfacing a confusing pty.Start error from the daemon.
feat(cmd): add services list command godo services (aliases: svc, svcs, service) lists every *.toml in ~/.godo/services/ as a table with NAME, COMMAND, AUTOSTART, RESTART, CRON, FILE, and STATUS columns. Files that fail to parse appear as error rows so broken configs are surfaced without hiding healthy ones. Adds service.LoadAllWithErrors to return per-file errors as a map keyed by absolute path instead of a single combined error string.
fix(tests): resolve macOS test failures Two issues caused all tests to fail on macOS: - sockaddr_un.sun_path is limited to 103 chars on macOS vs 107 on Linux. t.TempDir() embeds the full test name in the path, pushing long names past the limit and silently breaking net.Listen. Switched test helpers to os.MkdirTemp which omits the test name from the path. - procIsStopped read /proc/<pid>/status which does not exist on macOS. Split into lifecycle_linux_test.go (/proc) and lifecycle_darwin_test.go (ps -o state=, checking first char is T since macOS returns "TN" etc.)