diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-22 09:40:38 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-22 09:40:38 +0200 |
| commit | f78a185364ee24bc8c46d4aa6cc96d705faab326 (patch) | |
| tree | c0944b0ba4a1069abe36271dd4090bd705c99173 /go.mod | |
| parent | a76ed355954712e945b2f5da5929ca4c10dea0d2 (diff) | |
Implement shell package with readline vi mode and tab completion (task 358)
Replaces the stub in internal/shell/shell.go with a full implementation
backed by github.com/ergochat/readline. The Shell struct wraps a readline
instance configured with vi mode, a 500-entry in-memory history limit, and
a custom prefixCompleter that delegates tab expansion to a caller-supplied
function — mirroring the Ruby CLI#setup_readline / Readline.completion_proc
pattern. History deduplication (skip empty lines and consecutive duplicate
entries) matches the Ruby shell_loop behaviour by disabling auto-save and
calling SaveToHistory only for non-empty, non-duplicate lines. A package-
level ReadPassword helper handles PIN entry before the Shell is created.
Tests skip gracefully when stdin is not a TTY.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'go.mod')
| -rw-r--r-- | go.mod | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -2,4 +2,12 @@ module codeberg.org/snonux/geheim go 1.24 -require github.com/magefile/mage v1.15.0 +require ( + github.com/ergochat/readline v0.1.3 + github.com/magefile/mage v1.15.0 +) + +require ( + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.9.0 // indirect +) |
