config

package
v0.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2025 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultSyncServerURL = "https://api.commandchronicles.dev"

Hardcoded sync server URL for SaaS model const DefaultSyncServerURL = "https://sync.commandchronicles.dev"

View Source
const DefaultTagColor = "#00FFFF" // cyan

DefaultTagColor is the default color for new tags

Variables

View Source
var TagColorCodes = []string{
	"#888888",
	"#FF0000",
	"#00FF00",
	"#FFFF00",
	"#0000FF",
	"#FF00FF",
	"#00FFFF",
	"#FFFFFF",
	"#A0A0A0",
	"#FF8080",
	"#80FF80",
	"#FFFF80",
	"#8080FF",
	"#FF80FF",
	"#80FFFF",
	"#F0F0F0",
}

TagColorCodes defines the available colors for tags

View Source
var TagColorNames = []string{
	"Gray",
	"Red",
	"Green",
	"Yellow",
	"Blue",
	"Magenta",
	"Cyan",
	"White",
	"Light Gray",
	"Bright Red",
	"Bright Green",
	"Bright Yellow",
	"Bright Blue",
	"Bright Magenta",
	"Bright Cyan",
	"Bright White",
}

TagColorNames provides human-readable names for colors (for UI display)

Functions

func GetAllTagColors added in v0.3.0

func GetAllTagColors() []struct {
	Code  string
	Name  string
	Index int
}

GetAllTagColors returns all available tag colors with their names

func GetTagColorByIndex added in v0.3.0

func GetTagColorByIndex(index int) string

GetTagColorByIndex returns the color code for a given index

func GetTagColorIndex added in v0.3.0

func GetTagColorIndex(colorCode string) int

GetTagColorIndex returns the index of a color in TagColorCodes, or -1 if not found

func GetTagColorName added in v0.3.0

func GetTagColorName(colorCode string) string

GetTagColorName returns the human-readable name for a color code

func IsValidTagColor added in v0.3.0

func IsValidTagColor(colorCode string) bool

IsValidTagColor checks if a color code is valid

Types

type CacheConfig

type CacheConfig struct {
	// Number of recent commands always kept in RAM
	HotCacheSize int `toml:"hot_cache_size"`

	// Batch size for loading additional commands during search
	SearchBatchSize int `toml:"search_batch_size"`

	// Maximum memory usage in MB during search operations
	MaxMemoryMB int `toml:"max_memory_mb"`

	// Interval between cache refreshes in seconds
	RefreshInterval int `toml:"refresh_interval"`

	// Enable cache compression
	Compression bool `toml:"compression"`

	// Percentage of max memory to trigger eviction (0.0 to 1.0)
	EvictionThreshold float64 `toml:"eviction_threshold"`

	// Maximum age for cache entries in hours
	MaxCacheAgeHours int `toml:"max_cache_age_hours"`

	// Percentage of entries to remove during eviction (0.0 to 1.0)
	EvictionPercentage float64 `toml:"eviction_percentage"`
}

CacheConfig contains memory cache settings

type ColorConfig

type ColorConfig struct {
	Success string `toml:"success"` // Bright Green
	Error   string `toml:"error"`   // Bright Red
	Warning string `toml:"warning"` // Orange
	Info    string `toml:"info"`    // Bright Blue
	Tip     string `toml:"tip"`     // Bright Cyan
	Auth    string `toml:"auth"`    // Bright Blue
	Setup   string `toml:"setup"`   // Bright Magenta
	Sync    string `toml:"sync"`    // Bright Blue
	Stats   string `toml:"stats"`   // Bright Cyan
	Done    string `toml:"done"`    // Bright Green
}

ColorConfig contains color definitions for different output types

type Config

type Config struct {
	// Database configuration
	Database DatabaseConfig `toml:"database"`

	// Cache configuration
	Cache CacheConfig `toml:"cache"`

	// Security configuration
	Security SecurityConfig `toml:"security"`

	// TUI configuration
	TUI TUIConfig `toml:"tui"`

	// Shell integration configuration
	Shell ShellConfig `toml:"shell"`

	// Import/Export configuration
	ImportExport ImportExportConfig `toml:"import_export"`

	// Sync configuration
	Sync SyncConfig `toml:"sync"`

	// Daemon configuration
	Daemon DaemonConfig `toml:"daemon"`

	// Sentry configuration
	Sentry SentryConfig `toml:"sentry"`

	// Output configuration
	Output OutputConfig `toml:"output"`

	// Deletion configuration
	Deletion DeletionConfig `toml:"deletion"`

	// Tags configuration
	Tags TagsConfig `toml:"tags"`

	// Directory paths (computed, not stored in TOML)
	DataDir   string `toml:"-"`
	ConfigDir string `toml:"-"`
}

Config represents the complete configuration for CommandChronicles CLI

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns a configuration with sensible defaults

func Load

func Load(configPath string) (*Config, error)

Load loads configuration from the specified file path

func (*Config) ApplyDefaults

func (c *Config) ApplyDefaults()

ApplyDefaults applies default values for all configuration sections This ensures that TOML decoding doesn't override defaults with zero values

func (*Config) CleanupOldTagColors added in v0.3.0

func (c *Config) CleanupOldTagColors(maxAge time.Duration)

CleanupOldTagColors removes tag colors that haven't been used recently

func (*Config) EnsureDirectories

func (c *Config) EnsureDirectories() error

EnsureDirectories creates necessary directories for the configuration

func (*Config) GetAutoLockDuration

func (c *Config) GetAutoLockDuration() time.Duration

GetAutoLockDuration returns the auto-lock timeout as a time.Duration

func (*Config) GetCaptureTimeout

func (c *Config) GetCaptureTimeout() time.Duration

GetCaptureTimeout returns the shell capture timeout as a time.Duration

func (*Config) GetHashCollectionTimeoutDuration

func (c *Config) GetHashCollectionTimeoutDuration() time.Duration

GetHashCollectionTimeoutDuration returns the hash collection timeout as a time.Duration

func (*Config) GetIntegrityCheckFrequencyDuration

func (c *Config) GetIntegrityCheckFrequencyDuration() time.Duration

GetIntegrityCheckFrequencyDuration returns the integrity check frequency as a time.Duration

func (*Config) GetLaunchTimeout

func (c *Config) GetLaunchTimeout() time.Duration

GetLaunchTimeout returns the TUI launch timeout as a time.Duration

func (*Config) GetMaxCacheAge

func (c *Config) GetMaxCacheAge() time.Duration

GetMaxCacheAge returns the maximum cache age as a time.Duration

func (*Config) GetRefreshDuration

func (c *Config) GetRefreshDuration() time.Duration

GetRefreshDuration returns the cache refresh interval as a time.Duration

func (*Config) GetSessionTimeoutDuration

func (c *Config) GetSessionTimeoutDuration() time.Duration

GetSessionTimeoutDuration returns the session timeout as a time.Duration

func (*Config) GetSyncInterval

func (c *Config) GetSyncInterval() time.Duration

GetSyncInterval returns the sync interval as a time.Duration

func (*Config) GetSyncServerURL

func (cfg *Config) GetSyncServerURL() string

GetSyncServerURL returns the hardcoded sync server URL

func (*Config) GetSyncTimeout

func (c *Config) GetSyncTimeout() time.Duration

GetSyncTimeout returns the sync timeout as a time.Duration

func (*Config) GetTagColor added in v0.3.0

func (c *Config) GetTagColor(tagName string, commandTagColors map[string]string) string

GetTagColor returns the color for a given tag name, checking command override first, then global preferences, then default color

func (*Config) GetTagColorPreferences added in v0.3.0

func (c *Config) GetTagColorPreferences() map[string]string

GetTagColorPreferences returns all currently set tag color preferences

func (*Config) HasTagColorPreference added in v0.3.0

func (c *Config) HasTagColorPreference(tagName string) bool

HasTagColorPreference checks if a tag has a color preference set

func (*Config) RemoveTagColorPreference added in v0.3.0

func (c *Config) RemoveTagColorPreference(tagName string)

RemoveTagColorPreference removes a tag color preference

func (*Config) Save

func (c *Config) Save(configPath string) error

Save saves the configuration to the specified file path

func (*Config) SetTagColor added in v0.3.0

func (c *Config) SetTagColor(tagName, color string)

SetTagColor sets the color for a tag in global preferences

func (*Config) ShouldUseIntegrityVerification

func (c *Config) ShouldUseIntegrityVerification() bool

ShouldUseIntegrityVerification returns true if integrity verification should be used

func (*Config) Validate

func (c *Config) Validate() error

Validate validates the configuration values

type DaemonConfig

type DaemonConfig struct {
	// Sync interval in seconds
	SyncInterval time.Duration `toml:"sync_interval"`

	// Retry interval on failure
	RetryInterval time.Duration `toml:"retry_interval"`

	// Maximum retries before giving up
	MaxRetries int `toml:"max_retries"`

	// Log level for daemon
	LogLevel string `toml:"log_level"`

	// PID file path
	PIDFile string `toml:"pid_file"`

	// Log file path
	LogFile string `toml:"log_file"`

	// Daemonize process
	Daemonize bool `toml:"daemonize"`

	// Auto-start daemon when commands are run
	AutoStart bool `toml:"auto_start"`

	// System service is installed
	SystemService bool `toml:"system_service"`
}

DaemonConfig contains daemon-related settings

type DatabaseConfig

type DatabaseConfig struct {
	// Path to the SQLite database file
	Path string `toml:"path"`

	// Connection pool settings
	MaxOpenConns int `toml:"max_open_conns"`
	MaxIdleConns int `toml:"max_idle_conns"`

	// WAL mode settings
	WALMode bool `toml:"wal_mode"`

	// Synchronous mode (NORMAL, FULL)
	SyncMode string `toml:"sync_mode"`
}

DatabaseConfig contains database-related settings

type DeletionConfig added in v0.2.0

type DeletionConfig struct {
	// Reset sync timestamp after full wipe operations
	ResetSyncOnWipe bool `toml:"reset_sync_on_wipe"`

	// Require explicit confirmation for wipe operations
	RequireConfirmation bool `toml:"require_confirmation"`

	// Export backup before deletion by default
	AutoExportBeforeWipe bool `toml:"auto_export_before_wipe"`
}

DeletionConfig contains deletion operation settings

type ImportExportConfig

type ImportExportConfig struct {
	// Default import format (auto, bash, zsh, fish)
	DefaultFormat string `toml:"default_format"`

	// Enable deduplication during import
	Deduplicate bool `toml:"deduplicate"`

	// Batch size for large imports
	BatchSize int `toml:"batch_size"`

	// Supported formats
	SupportedFormats []string `toml:"supported_formats"`
}

ImportExportConfig contains import/export settings

type OutputConfig

type OutputConfig struct {
	// Enable colored output
	ColorsEnabled bool `toml:"colors_enabled"`

	// Color scheme: "modern", "conservative", "custom"
	ColorScheme string `toml:"color_scheme"`

	// Automatically disable colors when not in a TTY
	AutoDetectTTY bool `toml:"auto_detect_tty"`

	// Verbosity level: "minimal", "normal", "verbose"
	Verbosity string `toml:"verbosity"`

	// Custom color definitions (used when color_scheme = "custom")
	Colors ColorConfig `toml:"colors"`
}

OutputConfig contains CLI output formatting settings

type SecurityConfig

type SecurityConfig struct {
	// Session key file path
	SessionKeyPath string `toml:"session_key_path"`

	// Session timeout in seconds (default: 3 months)
	SessionTimeout int `toml:"session_timeout"`

	// Argon2id parameters
	Argon2Time    uint32 `toml:"argon2_time"`
	Argon2Memory  uint32 `toml:"argon2_memory"`
	Argon2Threads uint8  `toml:"argon2_threads"`

	// Auto-lock on inactivity (seconds, 0 = disabled)
	AutoLockTimeout int `toml:"auto_lock_timeout"`

	// Secure memory clearing
	SecureMemoryClear bool `toml:"secure_memory_clear"`
}

SecurityConfig contains security-related settings

type SentryConfig

type SentryConfig struct {
	// Enable Sentry error monitoring
	Enabled bool `toml:"enabled"`

	// Sentry DSN for error reporting
	DSN string `toml:"dsn"`

	// Environment name (development, staging, production)
	Environment string `toml:"environment"`

	// Sample rate for error reporting (0.0 to 1.0)
	SampleRate float64 `toml:"sample_rate"`

	// Release version for error grouping
	Release string `toml:"release"`

	// Debug mode for Sentry SDK
	Debug bool `toml:"debug"`
}

SentryConfig contains Sentry error monitoring settings

type ShellConfig

type ShellConfig struct {
	// Enable shell integration
	Enabled bool `toml:"enabled"`

	// Supported shells
	SupportedShells []string `toml:"supported_shells"`

	// Hook installation paths
	BashHookPath string `toml:"bash_hook_path"`
	ZshHookPath  string `toml:"zsh_hook_path"`

	// Command capture overhead limit in milliseconds
	CaptureTimeoutMS int `toml:"capture_timeout_ms"`

	// Enable graceful degradation
	GracefulDegradation bool `toml:"graceful_degradation"`

	// Auto-installation settings
	AutoInstall bool `toml:"auto_install"`

	// Backup configuration
	BackupDir       string `toml:"backup_dir"`
	BackupRetention int    `toml:"backup_retention_days"`
}

ShellConfig contains shell integration settings

type SyncConfig

type SyncConfig struct {
	// Enable synchronization
	Enabled bool `toml:"enabled"`

	// Sync server URL
	ServerURL string `toml:"server_url"`

	// User email for authentication
	Email string `toml:"email"`

	// Sync interval in seconds
	SyncInterval int `toml:"sync_interval"`

	// Advanced options
	MaxRetries int `toml:"max_retries"`
	Timeout    int `toml:"timeout_seconds"`
	BatchSize  int `toml:"batch_size"`

	// Auto-sync on startup
	AutoSync bool `toml:"auto_sync"`

	// Enable conflict resolution
	ConflictResolution bool `toml:"conflict_resolution"`

	// Integrity verification options
	IntegrityVerification   bool `toml:"integrity_verification"`
	HashCompression         bool `toml:"hash_compression"`
	MaxHashesPerRequest     int  `toml:"max_hashes_per_request"`
	IntegrityCheckFrequency int  `toml:"integrity_check_frequency"`
	HashCollectionTimeout   int  `toml:"hash_collection_timeout"`
}

SyncConfig contains synchronization settings

type TUIConfig

type TUIConfig struct {
	// Launch performance target in milliseconds
	LaunchTimeoutMS int `toml:"launch_timeout_ms"`

	// Enable syntax highlighting
	SyntaxHighlighting bool `toml:"syntax_highlighting"`

	// Color scheme (dark, light, auto)
	ColorScheme string `toml:"color_scheme"`

	// Enable animations
	Animations bool `toml:"animations"`

	// Results per page
	ResultsPerPage int `toml:"results_per_page"`

	// Fuzzy search threshold (0.0 to 1.0)
	FuzzyThreshold float64 `toml:"fuzzy_threshold"`
}

TUIConfig contains TUI interface settings

type TagsConfig added in v0.3.0

type TagsConfig struct {
	// Enable tag functionality
	Enabled bool `toml:"enabled"`

	// Show tags in TUI command display
	ShowInTUI bool `toml:"show_in_tui"`

	// Maximum number of tags to display in compact view
	MaxDisplayTags int `toml:"max_display_tags"`

	// Enable auto-tagging based on command patterns
	AutoTagging bool `toml:"auto_tagging"`

	// Auto-tagging rules (command prefix -> tag name)
	AutoTagRules map[string]string `toml:"auto_tag_rules"`

	// Visual indicators for tagged commands
	ShowIndicators bool `toml:"show_indicators"`

	// Separator for tag display (default: ", ")
	DisplaySeparator string `toml:"display_separator"`

	// Tag color preferences (tag name -> hex color code)
	TagColors map[string]string `toml:"tag_colors"`

	// Last updated timestamps for tag colors (tag name -> unix timestamp)
	TagColorsUpdated map[string]int64 `toml:"tag_colors_updated"`

	// Default color for new tags (hex color code)
	DefaultColor string `toml:"default_color"`
}

TagsConfig contains tag-related settings

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL