Documentation
¶
Index ¶
- Constants
- func ApplyTOMLFilter(input string, config *TOMLFilterRule) (string, int)
- func FormatSafetyReport(check SafetyCheck) string
- func IsPrintableASCII(s string) bool
- func MatchAndFilter(command string, output string, registry *FilterRegistry) (string, int, bool)
- func RunTestSuite(suite TestSuite, filterFunc func(string, string) string) (int, int, []string)
- func ValidateFilterConfig(content string) []string
- type FilterRegistry
- type FilterTestSuite
- func (ts *FilterTestSuite) AddTest(filterName string, test TOMLFilterTest)
- func (ts *FilterTestSuite) GetTests(filterName string) []TOMLFilterTest
- func (ts *FilterTestSuite) RunAllTests(filterFuncs map[string]func(string) string) []TestResult
- func (ts *FilterTestSuite) RunTest(filterName string, test TOMLFilterTest, filterFunc func(string) string) TestResult
- func (ts *FilterTestSuite) TotalTests() int
- type Loader
- func (l *Loader) IsTrusted(projectPath string) bool
- func (l *Loader) ListTrusted() []string
- func (l *Loader) LoadAll(projectDir string) (*FilterRegistry, error)
- func (l *Loader) LoadTrusted() error
- func (l *Loader) TrustProject(projectPath string) error
- func (l *Loader) UntrustProject(projectPath string) error
- type LoaderConfig
- type MatchOutputRule
- type Parser
- type ReplaceRule
- type RiskSummary
- type SafetyCheck
- type SafetyIssue
- type TOMLFilter
- type TOMLFilterEngine
- type TOMLFilterRule
- type TOMLFilterTest
- type TOMLFilterWrapper
- type TestCase
- type TestResult
- type TestSuite
- type TestSummary
- type TrustEntry
- type TrustManager
- func (tm *TrustManager) CheckTrust(filterPath string) (TrustStatus, error)
- func (tm *TrustManager) ListTrusted() map[string]TrustEntry
- func (tm *TrustManager) Load() error
- func (tm *TrustManager) Save() error
- func (tm *TrustManager) TrustProject(filterPath string) error
- func (tm *TrustManager) UntrustProject(filterPath string) (bool, error)
- type TrustStatus
- type TrustStore
Constants ¶
const SchemaVersion = 1
SchemaVersion is the expected TOML filter schema version
Variables ¶
This section is empty.
Functions ¶
func ApplyTOMLFilter ¶
func ApplyTOMLFilter(input string, config *TOMLFilterRule) (string, int)
ApplyTOMLFilter is a convenience function to apply a TOML filter config
func FormatSafetyReport ¶
func FormatSafetyReport(check SafetyCheck) string
FormatSafetyReport returns a human-readable safety report.
func IsPrintableASCII ¶
IsPrintableASCII checks if a string contains only printable ASCII.
func MatchAndFilter ¶
MatchAndFilter finds a matching filter and applies it
func RunTestSuite ¶
RunTestSuite runs a test suite against a filter.
func ValidateFilterConfig ¶
ValidateFilterConfig validates a filter configuration for correctness.
Types ¶
type FilterRegistry ¶
type FilterRegistry struct {
// contains filtered or unexported fields
}
FilterRegistry holds all loaded TOML filters
func NewFilterRegistry ¶
func NewFilterRegistry() *FilterRegistry
NewFilterRegistry creates a new filter registry
func (*FilterRegistry) Count ¶
func (r *FilterRegistry) Count() int
Count returns the number of loaded filters
func (*FilterRegistry) FindMatchingFilter ¶
func (r *FilterRegistry) FindMatchingFilter(command string) (string, string, *TOMLFilterRule)
FindMatchingFilter finds a filter that matches the given command
func (*FilterRegistry) LoadFile ¶
func (r *FilterRegistry) LoadFile(path string) error
LoadFile loads a single TOML filter file
type FilterTestSuite ¶
type FilterTestSuite struct {
Tests map[string][]TOMLFilterTest // map[filterName][]tests
}
FilterTestSuite represents a collection of tests for filters
func NewFilterTestSuite ¶
func NewFilterTestSuite() *FilterTestSuite
NewFilterTestSuite creates a new filter test suite
func ParseTests ¶
func ParseTests(raw map[string]any) (*FilterTestSuite, error)
ParseTests extracts test cases from TOML raw content
func (*FilterTestSuite) AddTest ¶
func (ts *FilterTestSuite) AddTest(filterName string, test TOMLFilterTest)
AddTest adds a test to the suite
func (*FilterTestSuite) GetTests ¶
func (ts *FilterTestSuite) GetTests(filterName string) []TOMLFilterTest
GetTests returns all tests for a specific filter
func (*FilterTestSuite) RunAllTests ¶
func (ts *FilterTestSuite) RunAllTests(filterFuncs map[string]func(string) string) []TestResult
RunAllTests executes all tests in the suite
func (*FilterTestSuite) RunTest ¶
func (ts *FilterTestSuite) RunTest(filterName string, test TOMLFilterTest, filterFunc func(string) string) TestResult
RunTest executes a single test
func (*FilterTestSuite) TotalTests ¶
func (ts *FilterTestSuite) TotalTests() int
TotalTests returns the total number of tests
type Loader ¶
type Loader struct {
// contains filtered or unexported fields
}
Loader handles loading TOML filters from multiple sources
var GlobalFilterLoader *Loader
GlobalFilterLoader is the default loader instance
func (*Loader) ListTrusted ¶
ListTrusted returns all trusted project paths
func (*Loader) LoadAll ¶
func (l *Loader) LoadAll(projectDir string) (*FilterRegistry, error)
LoadAll loads filters from all sources with priority order: 1. Project-local: .tokman/filters.toml (requires trust) 2. User-global: ~/.config/tokman/filters.toml 3. Built-in: embedded filters
func (*Loader) LoadTrusted ¶
LoadTrusted loads the trusted projects file
func (*Loader) TrustProject ¶
TrustProject marks a project directory as trusted for filter loading
func (*Loader) UntrustProject ¶
UntrustProject removes a project from the trusted list
type LoaderConfig ¶
type LoaderConfig struct {
ConfigDir string // Base config directory (default: ~/.config/tokman)
DataDir string // Base data directory (default: ~/.local/share/tokman)
ProjectDir string // Current project directory
}
LoaderConfig configures the filter loader
type MatchOutputRule ¶
type MatchOutputRule struct {
Pattern string `toml:"pattern"`
Message string `toml:"message"`
Priority int `toml:"priority"`
Unless string `toml:"unless"` // Optional: if this pattern also matches, skip the rule
}
MatchOutputRule defines a short-circuit match rule If pattern matches, returns message immediately (short-circuit). If unless is set and also matches, the rule is skipped (prevents swallowing errors).
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser handles parsing TOML filter files
func (*Parser) ParseContent ¶
func (p *Parser) ParseContent(content []byte, source string) (*TOMLFilter, error)
ParseContent parses TOML filter content
type ReplaceRule ¶
ReplaceRule defines a regex replacement rule
type RiskSummary ¶
RiskSummary holds risk analysis results for a filter file.
func AnalyzeFilterRisk ¶
func AnalyzeFilterRisk(content string) RiskSummary
AnalyzeFilterRisk analyzes a TOML filter file for risky patterns.
type SafetyCheck ¶
type SafetyCheck struct {
Passed bool
Issues []SafetyIssue
}
SafetyCheck represents a safety check result.
func CheckFilterSafety ¶
func CheckFilterSafety(content string) SafetyCheck
CheckFilterSafety performs safety checks on a TOML filter definition. Inspired by tokf's filter safety checks.
type SafetyIssue ¶
type SafetyIssue struct {
Severity string // "critical", "warning", "info"
Message string
Line int
}
SafetyIssue represents a safety issue found in a filter.
type TOMLFilter ¶
type TOMLFilter struct {
SchemaVersion int `toml:"schema_version"`
Filters map[string]TOMLFilterRule `toml:"-"`
RawContent map[string]any `toml:"-"`
}
TOMLFilter represents a parsed TOML filter file
func (*TOMLFilter) MatchesCommand ¶
func (f *TOMLFilter) MatchesCommand(command string) (string, *TOMLFilterRule, error)
MatchesCommand checks if any filter matches the given command
func (*TOMLFilter) Validate ¶
func (f *TOMLFilter) Validate() error
Validate validates the filter configuration
type TOMLFilterEngine ¶
type TOMLFilterEngine struct {
// contains filtered or unexported fields
}
TOMLFilterEngine applies TOML-defined filter rules to output
func NewTOMLFilterEngine ¶
func NewTOMLFilterEngine(config *TOMLFilterRule) *TOMLFilterEngine
NewTOMLFilterEngine creates a new filter engine from a TOML config
type TOMLFilterRule ¶
type TOMLFilterRule struct {
MatchCommand string `toml:"match_command"`
StripANSI bool `toml:"strip_ansi"`
Replace []ReplaceRule `toml:"replace"`
MatchOutput []MatchOutputRule `toml:"match_output"`
StripLinesMatching []string `toml:"strip_lines_matching"`
KeepLinesMatching []string `toml:"keep_lines_matching"`
TruncateLinesAt int `toml:"truncate_lines_at"`
Head int `toml:"head"`
Tail int `toml:"tail"`
MaxLines int `toml:"max_lines"`
OnEmpty string `toml:"on_empty"`
}
TOMLFilterRule represents a single TOML filter rule configuration
type TOMLFilterTest ¶
type TOMLFilterTest struct {
Name string `toml:"name"`
Input string `toml:"input"`
Expected string `toml:"expected"`
Skip bool `toml:"skip"`
Reason string `toml:"reason"`
}
TOMLFilterTest represents an inline test case for a filter
type TOMLFilterWrapper ¶
type TOMLFilterWrapper struct {
// contains filtered or unexported fields
}
TOMLFilterWrapper implements the filter.Filter interface for TOML filters
func NewTOMLFilterWrapper ¶
func NewTOMLFilterWrapper(name string, config *TOMLFilterRule) *TOMLFilterWrapper
NewTOMLFilterWrapper creates a filter.Filter wrapper for a TOML filter
func (*TOMLFilterWrapper) Name ¶
func (f *TOMLFilterWrapper) Name() string
Name returns the filter name
type TestResult ¶
type TestResult struct {
FilterName string
TestName string
Passed bool
Expected string
Got string
Error error
Skipped bool
Reason string
}
TestResult represents the result of running a single test
type TestSummary ¶
type TestSummary struct {
Total int
Passed int
Failed int
Skipped int
Results []TestResult
}
Summary returns a summary of test results
func Summarize ¶
func Summarize(results []TestResult) TestSummary
Summarize creates a summary from test results
func (TestSummary) FormatSummary ¶
func (s TestSummary) FormatSummary() string
FormatSummary formats a test summary for display
type TrustEntry ¶
TrustEntry holds trust metadata for a project filter file.
type TrustManager ¶
type TrustManager struct {
// contains filtered or unexported fields
}
TrustManager manages project filter trust with SHA-256 verification.
func NewTrustManager ¶
func NewTrustManager(configDir string) *TrustManager
NewTrustManager creates a new trust manager.
func (*TrustManager) CheckTrust ¶
func (tm *TrustManager) CheckTrust(filterPath string) (TrustStatus, error)
CheckTrust verifies if a project filter file is trusted. Returns TrustStatus and any error.
func (*TrustManager) ListTrusted ¶
func (tm *TrustManager) ListTrusted() map[string]TrustEntry
ListTrusted returns all trusted project filter paths.
func (*TrustManager) Load ¶
func (tm *TrustManager) Load() error
Load loads the trust store from disk.
func (*TrustManager) Save ¶
func (tm *TrustManager) Save() error
Save persists the trust store to disk.
func (*TrustManager) TrustProject ¶
func (tm *TrustManager) TrustProject(filterPath string) error
TrustProject stores the current SHA-256 hash as trusted.
func (*TrustManager) UntrustProject ¶
func (tm *TrustManager) UntrustProject(filterPath string) (bool, error)
UntrustProject removes trust for a project filter file.
type TrustStatus ¶
type TrustStatus int
TrustStatus represents the result of a trust check.
const ( TrustStatusTrusted TrustStatus = iota TrustStatusUntrusted TrustStatusContentChanged TrustStatusEnvOverride )
type TrustStore ¶
type TrustStore struct {
Version int `json:"version"`
Trusted map[string]TrustEntry `json:"trusted"`
}
TrustStore holds all trusted project filter entries.