cmd

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2025 License: GPL-3.0 Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DecisionBlock    = "block"
	DecisionAllow    = "allow"
	DecisionConflict = "conflict"

	ReasonCounts            = "counts"
	ReasonManualForcedBlock = "manual_forced_block"
	ReasonManualForcedAllow = "manual_forced_allow"
	ReasonEqualCounts       = "equal_counts"
)

Decision constants

Variables

View Source
var (
	Logger         *multilog.Logger
	AppConfig      *config.AppConfig
	SourcesConfigs []config.SourcesConfig
)

Functions

func AddProfilingFlags

func AddProfilingFlags(
	cmd *cobra.Command,
	cpuProfileVar, memProfileVar, goroutineProfileVar, blockProfileVar *bool,
	profileDirVar *string,
)

AddProfilingFlags adds profiling flags to the provided command

func Execute

func Execute()

func FilterOverlapSummariesByMinPercent added in v0.4.0

func FilterOverlapSummariesByMinPercent(overlapSummaries []c.OverlapSummary, minPercent float64) []c.OverlapSummary

FilterOverlapSummariesByMinPercent filters overlap summaries by minimum overlap percent.

func GenerateConflictReport added in v1.0.0

func GenerateConflictReport(logger *multilog.Logger, summaryFile string) (string, error)

GenerateConflictReport generates markdown from JSON summary

func GetConfigPath

func GetConfigPath() (string, error)

GetConfigPath returns the path to the configuration file.

func InitForTesting

func InitForTesting()

InitForTesting initializes directories for testing when cobra.OnInitialize is not called

func IsConsolidatedSummaryValid

func IsConsolidatedSummaryValid(summary c.ConsolidatedSummary) bool

func ResolveConflictsByCounts added in v1.0.0

func ResolveConflictsByCounts(
	logger *multilog.Logger,
	processedFiles []c.ProcessedFile,
) (string, string, string, error)

ResolveConflictsByCounts builds allowlist and blocklist and JSON summary. Uses count-based resolution: higher count wins, equal counts create conflicts.

Types

type CategoriesStats

type CategoriesStats struct {
	CategorySummary   map[string]int
	CategoryListTypes map[string][]string
	LastUpdateTime    string
	TotalCategories   int
}

type ConflictDetail added in v1.0.0

type ConflictDetail struct {
	Entry        string   `json:"entry"`
	BlockSources []string `json:"block_sources"`
	AllowSources []string `json:"allow_sources"`
	BlockCount   int      `json:"block_count"`
	AllowCount   int      `json:"allow_count"`
}

ConflictDetail captures entries that need manual review

func BuildResolutionSets added in v1.0.0

func BuildResolutionSets(
	logger *multilog.Logger,
	processedFiles []c.ProcessedFile,
) (
	map[string]u.StringSet,
	map[string]u.StringSet,
	[]ConflictDetail,
	map[string]struct{},
	map[string]struct{},
	map[string]ConflictDetail,
)

BuildResolutionSets processes files and returns complete resolution results

type ConsolidateListStats

type ConsolidateListStats struct {
	Count        int
	FilesCount   int
	IgnoredCount int
}

type ConsolidateStats

type ConsolidateStats struct {
	FilesByType    map[string]ConsolidateTypeStats
	LastUpdateTime string
	TotalFiles     int
}

type ConsolidateTypeStats

type ConsolidateTypeStats struct {
	Blocklist ConsolidateListStats
	Allowlist ConsolidateListStats
}

type ConsolidationManager added in v1.0.0

type ConsolidationManager struct {
	// contains filtered or unexported fields
}

ConsolidationManager handles general consolidation conflict resolution

func NewConsolidationManager added in v1.0.0

func NewConsolidationManager(logger *multilog.Logger) *ConsolidationManager

NewConsolidationManager creates a new manager

func (*ConsolidationManager) GenerateConflictReport added in v1.0.0

func (cm *ConsolidationManager) GenerateConflictReport(processedFiles []c.ProcessedFile) error

GenerateConflictReport generates conflict report for general consolidation

type ConsolidationParams

type ConsolidationParams struct {
	GenericSourceType string
	ListType          string
	Identifier        string // group or category
	OutputDir         string
	IdentifierField   string // "Group" or "Category"
}

ConsolidationParams holds parameters for consolidation functions

type DownloadStats

type DownloadStats struct {
	SourcesByType  map[string]int
	LastUpdateTime string
	ErrorSources   []string
	TotalSources   int
	SuccessCount   int
	FailedCount    int
}

type GroupsStats

type GroupsStats struct {
	GroupSummary   map[string]int
	GroupListTypes map[string][]string
	LastUpdateTime string
	TotalGroups    int
}

type OverallSummaryStats

type OverallSummaryStats struct {
	TotalSources         int
	TotalDownloads       int
	TotalProcessed       int
	TotalConsolidated    int
	TotalGroups          int
	TotalCategories      int
	TotalTopLists        int
	TotalOverlapAnalyzed int
}

type OverlapDetail

type OverlapDetail struct {
	Source     string
	ListType   string
	SourceType string
	LastUpdate string
	Targets    []TargetDetail
	Count      int
}

type OverlapStats

type OverlapStats struct {
	LastUpdateTime string
	TotalAnalyzed  int
}

type OverrideRecord added in v1.0.0

type OverrideRecord struct {
	Entry      string   `json:"entry"`
	Decision   string   `json:"decision"`
	Reason     string   `json:"reason"`
	BlockSrcs  []string `json:"block_sources"`
	AllowSrcs  []string `json:"allow_sources"`
	BlockCount int      `json:"block_count"`
	AllowCount int      `json:"allow_count"`
}

OverrideRecord represents a single override decision

type ProcessingConfig

type ProcessingConfig struct {
	GetFilesFunc       func([]c.ProcessedFile, string) []c.ProcessedFile
	ConsolidateFunc    func(*multilog.Logger, string, string, string, u.StringSet, []c.ProcessedFile) (u.StringSet, c.ConsolidatedSummary) // nolint:lll
	Identifier         string
	IdentifierField    string
	ProcessedFiles     []c.ProcessedFile
	GenericSourceTypes []string
}

ProcessingConfig holds configuration for processing consolidation

type ProcessingStats

type ProcessingStats struct {
	ValidFilesByType   map[string]int
	InvalidFilesByType map[string]int
	LastUpdateTime     string
	TotalSources       int
}

type ResolutionResult added in v1.0.0

type ResolutionResult struct {
	ManualOverride struct {
		AllowToBlock map[string]struct{}
		BlockToAllow map[string]struct{}
	}
	AllowByType map[string]u.StringSet
	BlockByType map[string]u.StringSet
	DetailsMap  map[string]ConflictDetail
	Conflicts   []ConflictDetail
}

ResolutionResult contains the results of conflict resolution

type SourceMaps added in v1.0.0

type SourceMaps struct {
	BlockMap   map[string]map[string]struct{}
	AllowMap   map[string]map[string]struct{}
	EntryTypes map[string]map[string]struct{}
}

SourceMaps contains all source mapping data

type SourceStats

type SourceStats struct {
	LastUpdated      string
	Categories       []string
	SourceTypes      []string
	Countries        []string
	TotalSources     int
	EnabledSources   int
	DisabledSources  int
	BlocklistSources int
	AllowlistSources int
}

type SummariesInfo

type SummariesInfo struct {
	SummaryTypes  map[string]SummaryTypeInfo
	LastGenerated string
	TotalFiles    int
	OverallStats  OverallSummaryStats
}

SummariesInfo holds information about summary files

type SummaryTypeInfo

type SummaryTypeInfo struct {
	LastUpdated string
	FileCount   int
}

type TargetDetail

type TargetDetail struct {
	Name           string
	ListType       string
	SourceType     string
	OverlapPercent float64
	Count          int
	OverlapCount   int
}

type TopFileDetail

type TopFileDetail struct {
	ListType   string
	MinSources int
	Count      int
}

type TopStats

type TopStats struct {
	FilesByType    map[string]int
	FileDetails    map[string][]TopFileDetail
	LastUpdateTime string
	TotalFiles     int
}

type WorkflowSummary

type WorkflowSummary struct {
	LastRun     string
	Processing  ProcessingStats
	Groups      GroupsStats
	Categories  CategoriesStats
	Top         TopStats
	Consolidate ConsolidateStats
	Overlap     OverlapStats
	Download    DownloadStats
}

WorkflowSummary holds summary data for the entire workflow

Jump to

Keyboard shortcuts

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