feat(help): add catalog for managing help topics
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
82eb5ec054
commit
e999f390ac
1 changed files with 87 additions and 0 deletions
87
pkg/help/catalog.go
Normal file
87
pkg/help/catalog.go
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
package help
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// Catalog manages help topics.
|
||||
type Catalog struct {
|
||||
topics map[string]*Topic
|
||||
index *searchIndex
|
||||
}
|
||||
|
||||
// DefaultCatalog returns a catalog with built-in topics.
|
||||
func DefaultCatalog() *Catalog {
|
||||
c := &Catalog{
|
||||
topics: make(map[string]*Topic),
|
||||
index: newSearchIndex(),
|
||||
}
|
||||
|
||||
// Add default topics
|
||||
c.Add(&Topic{
|
||||
ID: "getting-started",
|
||||
Title: "Getting Started",
|
||||
Content: `# Getting Started
|
||||
|
||||
Welcome to Core! This CLI tool helps you manage development workflows.
|
||||
|
||||
## Common Commands
|
||||
|
||||
- core dev: Development workflows
|
||||
- core setup: Setup repository
|
||||
- core doctor: Check environment health
|
||||
- core test: Run tests
|
||||
|
||||
## Next Steps
|
||||
|
||||
Run 'core help <topic>' to learn more about a specific topic.
|
||||
`,
|
||||
})
|
||||
c.Add(&Topic{
|
||||
ID: "config",
|
||||
Title: "Configuration",
|
||||
Content: `# Configuration
|
||||
|
||||
Core is configured via environment variables and config files.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
- CORE_DEBUG: Enable debug logging
|
||||
- GITHUB_TOKEN: GitHub API token
|
||||
|
||||
## Config Files
|
||||
|
||||
Config is stored in ~/.core/config.yaml
|
||||
`,
|
||||
})
|
||||
return c
|
||||
}
|
||||
|
||||
// Add adds a topic to the catalog.
|
||||
func (c *Catalog) Add(t *Topic) {
|
||||
c.topics[t.ID] = t
|
||||
c.index.Add(t)
|
||||
}
|
||||
|
||||
// List returns all topics.
|
||||
func (c *Catalog) List() []*Topic {
|
||||
var list []*Topic
|
||||
for _, t := range c.topics {
|
||||
list = append(list, t)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
// Search searches for topics.
|
||||
func (c *Catalog) Search(query string) []*SearchResult {
|
||||
return c.index.Search(query)
|
||||
}
|
||||
|
||||
// Get returns a topic by ID.
|
||||
func (c *Catalog) Get(id string) (*Topic, error) {
|
||||
t, ok := c.topics[id]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("topic not found: %s", id)
|
||||
}
|
||||
return t, nil
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue