d0ugal / d0ugal/graith

Make external tool executables and operation timeouts configurable

Open
#1,238 1 comment 0 reactions 0 assignees View on GitHub
cli daemon enhancement size: M
Dominant language
Go
Stars
2
Forks
0
Avg merge
5h 49m
Merged PRs (30d)
189

Description

Parent: #1230

## Problem

Graith assumes fixed executable names/paths such as `git`, `gh`, `sh`, `osascript`, `/bin/ps`, and `/usr/sbin/lsof`. Git fetch/merge/username operations also use fixed 2m/2m/15s timeouts.

This makes Nix/custom PATH setups, wrappers, alternate shells, and slower repositories difficult to support. Relevant code spans `internal/git`, `internal/store`, `internal/daemon/ghpr.go`, notification/resource-monitor code, and CLI store discovery.

## Acceptance criteria

- Add a documented tool-resolution configuration for overrideable external executables.
- Add typed timeouts for Git/GitHub operations that can legitimately vary by environment.
- Use the same resolved Git/GitHub tools in daemon, store, and CLI paths.
- Validate explicit paths at use/startup with actionable errors while retaining PATH lookup defaults.
- Keep semantic subcommands such as `git rev-parse` and sandbox backend protocol flags in code unless there is a concrete compatibility need; this is not a generic arbitrary-argv escape hatch.
- Add tests using fake tool binaries and non-default timeouts.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing the fixed tool and timeout usage in internal/git, internal/store, internal/daemon/ghpr.go, notification/resource-monitor code, and CLI store discovery. Follow how Git and GitHub operations are shared across daemon, store, and CLI paths. Done means documented configuration, default PATH lookup, actionable validation, and tests with fake tool binaries and non-default timeouts.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, github, go
Domain
backend, cli, tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.