Documentation
¶
Overview ¶
Package config handles staghorn configuration.
Index ¶
Constants ¶
const ( DefaultVersion = 1 DefaultPath = "CLAUDE.md" DefaultCacheTTL = "24h" )
Default values.
Variables ¶
This section is empty.
Functions ¶
func ProjectActionsDir ¶
ProjectActionsDir returns the path for project-specific actions. This is relative to the project root (.staghorn/actions/).
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
PersonalActions string // ~/.config/staghorn/actions
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) TeamActionsDir ¶
TeamActionsDir returns the path for cached team actions.
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)
ActionsDir string // .staghorn/actions/
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"