Merge pull request '[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/cli/RFC.md fully. Find features des...' (#67) from agent/read---spec-code-core-go-cli-rfc-md-full into dev
All checks were successful
Security Scan / security (push) Successful in 23s

This commit is contained in:
Virgil 2026-04-02 10:21:46 +00:00
commit 53b5552554
2 changed files with 37 additions and 6 deletions

View file

@ -105,6 +105,8 @@ func renderSearchResults(results []*gohelp.SearchResult, query string) error {
cli.Println("%s", cli.DimStr(" "+snippet)) cli.Println("%s", cli.DimStr(" "+snippet))
} }
} }
cli.Blank()
renderHelpHint(query)
return nil return nil
} }
@ -112,7 +114,9 @@ func renderHelpHint(query string) {
cli.Hint("browse", "core help") cli.Hint("browse", "core help")
if trimmed := strings.TrimSpace(query); trimmed != "" { if trimmed := strings.TrimSpace(query); trimmed != "" {
cli.Hint("search", fmt.Sprintf("core help search %q", trimmed)) cli.Hint("search", fmt.Sprintf("core help search %q", trimmed))
return
} }
cli.Hint("search", "core help search <topic>")
} }
func renderTopicList(topics []*gohelp.Topic) error { func renderTopicList(topics []*gohelp.Topic) error {
@ -127,6 +131,8 @@ func renderTopicList(topics []*gohelp.Topic) error {
cli.Println("%s", cli.DimStr(" "+summary)) cli.Println("%s", cli.DimStr(" "+summary))
} }
} }
cli.Blank()
renderHelpHint("")
return nil return nil
} }
@ -158,4 +164,6 @@ func renderTopic(t *gohelp.Topic) {
cli.Blank() cli.Blank()
cli.Println("%s", t.Content) cli.Println("%s", t.Content)
cli.Blank() cli.Blank()
renderHelpHint(t.ID)
cli.Blank()
} }

View file

@ -74,6 +74,8 @@ func TestAddHelpCommands_Good(t *testing.T) {
}) })
assert.Contains(t, out, "AVAILABLE HELP TOPICS") assert.Contains(t, out, "AVAILABLE HELP TOPICS")
assert.Contains(t, out, topics[0].ID) assert.Contains(t, out, topics[0].ID)
assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help search <topic>")
} }
func TestAddHelpCommands_Good_Serve(t *testing.T) { func TestAddHelpCommands_Good_Serve(t *testing.T) {
@ -118,6 +120,8 @@ func TestAddHelpCommands_Good_Search(t *testing.T) {
assert.Contains(t, out, "SEARCH RESULTS") assert.Contains(t, out, "SEARCH RESULTS")
assert.Contains(t, out, query) assert.Contains(t, out, query)
assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help search")
} }
func TestRenderSearchResults_Good(t *testing.T) { func TestRenderSearchResults_Good(t *testing.T) {
@ -137,6 +141,8 @@ func TestRenderSearchResults_Good(t *testing.T) {
assert.Contains(t, out, "SEARCH RESULTS") assert.Contains(t, out, "SEARCH RESULTS")
assert.Contains(t, out, "config - Configuration") assert.Contains(t, out, "config - Configuration")
assert.Contains(t, out, "Core is configured via environment variables.") assert.Contains(t, out, "Core is configured via environment variables.")
assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help search \"config\"")
} }
func TestRenderTopicList_Good(t *testing.T) { func TestRenderTopicList_Good(t *testing.T) {
@ -154,6 +160,23 @@ func TestRenderTopicList_Good(t *testing.T) {
assert.Contains(t, out, "AVAILABLE HELP TOPICS") assert.Contains(t, out, "AVAILABLE HELP TOPICS")
assert.Contains(t, out, "config - Configuration") assert.Contains(t, out, "config - Configuration")
assert.Contains(t, out, "Core is configured via environment variables.") assert.Contains(t, out, "Core is configured via environment variables.")
assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help search <topic>")
}
func TestRenderTopic_Good(t *testing.T) {
out := captureOutput(t, func() {
renderTopic(&gohelp.Topic{
ID: "config",
Title: "Configuration",
Content: "Core is configured via environment variables.",
})
})
assert.Contains(t, out, "Configuration")
assert.Contains(t, out, "Core is configured via environment variables.")
assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help search \"config\"")
} }
func TestAddHelpCommands_Bad(t *testing.T) { func TestAddHelpCommands_Bad(t *testing.T) {
@ -189,16 +212,16 @@ func TestAddHelpCommands_Bad(t *testing.T) {
root := &cli.Command{Use: "core"} root := &cli.Command{Use: "core"}
AddHelpCommands(root) AddHelpCommands(root)
cmd, _, err := root.Find([]string{"help", "search"}) cmd, _, findErr := root.Find([]string{"help", "search"})
require.NoError(t, err) require.NoError(t, findErr)
require.NotNil(t, cmd) require.NotNil(t, cmd)
var err error var runErr error
out := captureOutput(t, func() { out := captureOutput(t, func() {
err = cmd.RunE(cmd, nil) runErr = cmd.RunE(cmd, nil)
}) })
require.Error(t, err) require.Error(t, runErr)
assert.Contains(t, err.Error(), "help search query is required") assert.Contains(t, runErr.Error(), "help search query is required")
assert.Contains(t, out, "browse") assert.Contains(t, out, "browse")
assert.Contains(t, out, "core help") assert.Contains(t, out, "core help")
}) })