Documentation
¶
Overview ¶
Package config handles staghorn configuration.
Index ¶
- Constants
- func Exists() bool
- func ProjectClaudeCommandsDir(projectRoot string) string
- func ProjectCommandsDir(projectRoot string) string
- func Save(cfg *Config) error
- func SaveTo(cfg *Config, path string) error
- type CacheConfig
- type Config
- type LanguageConfig
- type Paths
- func (p *Paths) CacheFile(owner, repo string) string
- func (p *Paths) CacheMetadataFile(owner, repo string) string
- func (p *Paths) ClaudeCommandsDir() string
- func (p *Paths) TeamCommandsDir(owner, repo string) string
- func (p *Paths) TeamLanguagesDir(owner, repo string) string
- func (p *Paths) TeamTemplatesDir(owner, repo string) string
- type ProjectPaths
- type TeamConfig
Constants ¶
const ( DefaultVersion = 1 DefaultPath = "CLAUDE.md" DefaultCacheTTL = "24h" )
Default values.
Variables ¶
This section is empty.
Functions ¶
func ProjectClaudeCommandsDir ¶ added in v0.2.0
ProjectClaudeCommandsDir returns the path for project-level Claude Code commands.
func ProjectCommandsDir ¶ added in v0.2.0
ProjectCommandsDir returns the path for project-specific commands. This is relative to the project root (.staghorn/commands/).
Types ¶
type CacheConfig ¶
type CacheConfig struct {
TTL string `yaml:"ttl"` // e.g., "24h"
}
CacheConfig contains cache settings.
func (*CacheConfig) TTLDuration ¶
func (c *CacheConfig) TTLDuration() time.Duration
TTLDuration returns the cache TTL as a time.Duration.
type Config ¶
type Config struct {
Version int `yaml:"version"`
Team TeamConfig `yaml:"team"`
Cache CacheConfig `yaml:"cache"`
Languages LanguageConfig `yaml:"languages,omitempty"`
}
Config represents the staghorn configuration file.
type LanguageConfig ¶
type LanguageConfig struct {
AutoDetect bool `yaml:"auto_detect"`
Enabled []string `yaml:"enabled,omitempty"`
Disabled []string `yaml:"disabled,omitempty"`
}
LanguageConfig contains language-specific settings.
type Paths ¶
type Paths struct {
ConfigDir string // ~/.config/staghorn
CacheDir string // ~/.cache/staghorn
ConfigFile string // ~/.config/staghorn/config.yaml
PersonalMD string // ~/.config/staghorn/personal.md
PersonalCommands string // ~/.config/staghorn/commands
PersonalLanguages string // ~/.config/staghorn/languages
}
Paths provides all staghorn-related filesystem paths.
func NewPaths ¶
func NewPaths() *Paths
NewPaths creates Paths using ~/.config and ~/.cache directories. We use these paths explicitly for cross-platform consistency rather than platform-specific defaults (like ~/Library/Application Support on macOS).
func NewPathsWithOverrides ¶
NewPathsWithOverrides allows overriding directories for testing.
func (*Paths) CacheMetadataFile ¶
CacheMetadataFile returns the path for cache metadata sidecar.
func (*Paths) ClaudeCommandsDir ¶ added in v0.2.0
ClaudeCommandsDir returns the path for Claude Code custom commands.
func (*Paths) TeamCommandsDir ¶ added in v0.2.0
TeamCommandsDir returns the path for cached team commands.
func (*Paths) TeamLanguagesDir ¶
TeamLanguagesDir returns the path for cached team language configs.
func (*Paths) TeamTemplatesDir ¶
TeamTemplatesDir returns the path for cached team project templates.
type ProjectPaths ¶
type ProjectPaths struct {
Root string // Project root directory
StaghornDir string // .staghorn/
SourceMD string // .staghorn/project.md (source of truth)
OutputMD string // ./CLAUDE.md (generated output)
CommandsDir string // .staghorn/commands/
LanguagesDir string // .staghorn/languages/
ConfigFile string // .staghorn/config.yaml (optional project config)
}
ProjectPaths holds paths for project-level config management.
func NewProjectPaths ¶
func NewProjectPaths(projectRoot string) *ProjectPaths
NewProjectPaths creates ProjectPaths for a given project root.
type TeamConfig ¶
type TeamConfig struct {
Repo string `yaml:"repo"` // e.g., "github.com/acme/standards" or "acme/standards"
Branch string `yaml:"branch"` // optional, defaults to repo's default branch
Path string `yaml:"path"` // optional, defaults to "CLAUDE.md"
}
TeamConfig contains team repository settings.
func (*TeamConfig) ParseRepo ¶
func (t *TeamConfig) ParseRepo() (owner, repo string, err error)
ParseRepo extracts owner and repo name from the repo string. Accepts formats:
- "https://github.com/owner/repo"
- "https://github.com/owner/repo.git"
- "https://github.com/owner/repo/tree/main"
- "https://github.com/owner/repo/blob/main/file.md"
- "github.com/owner/repo"
- "owner/repo"