Documentation
¶
Index ¶
- func PrintErrors(errors []ProcessingError)
- func WorkerPool(ctx context.Context, m *WorkerPoolManager, trackExecution bool) error
- type Job
- type JobExecutionTime
- type Metrics
- func (m *Metrics) IncrementDirectory()
- func (m *Metrics) IncrementError()
- func (m *Metrics) IncrementFile()
- func (m *Metrics) IncrementSkippedFile()
- func (m *Metrics) PrintSummary(errors []ProcessingError, skippedFiles []ProcessingError, verbose bool)
- func (m *Metrics) Reset()
- func (m *Metrics) SummaryAsString(errors []ProcessingError, skippedFiles []ProcessingError, ...) (string, error)
- func (m *Metrics) ToJSONFile(errors []ProcessingError, skippedFiles []ProcessingError, outputPath string) (err error)
- type ProcessingError
- type SkipType
- type SkippedFile
- type SummaryFormat
- type SummaryOptions
- type WorkerPoolManager
- type WorkerPoolOption
- type WorkerPoolOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func PrintErrors ¶
func PrintErrors(errors []ProcessingError)
PrintErrors logs errors in a structured way.
func WorkerPool ¶
func WorkerPool(ctx context.Context, m *WorkerPoolManager, trackExecution bool) error
WorkerPool processes files concurrently and updates metrics.
Types ¶
type JobExecutionTime ¶
JobExecutionTime stores execution duration per file.
type Metrics ¶
type Metrics struct {
FilesProcessed int `json:"files_processed"`
DirectoriesProcessed int `json:"directories_processed"`
ErrorsEncountered int `json:"errors_encountered"`
SkippedFiles int `json:"skipped_files"`
StartTime time.Time `json:"start_time"`
ElapsedTime string `json:"elapsed_time"`
// contains filtered or unexported fields
}
Metrics tracks processing statistics.
func (*Metrics) IncrementDirectory ¶
func (m *Metrics) IncrementDirectory()
IncrementDirectory updates the directory counter.
func (*Metrics) IncrementError ¶
func (m *Metrics) IncrementError()
IncrementError updates the error counter.
func (*Metrics) IncrementFile ¶
func (m *Metrics) IncrementFile()
IncrementFile updates the file counter.
func (*Metrics) IncrementSkippedFile ¶
func (m *Metrics) IncrementSkippedFile()
IncrementSkippedFile updates the skipped file counter.
func (*Metrics) PrintSummary ¶
func (m *Metrics) PrintSummary(errors []ProcessingError, skippedFiles []ProcessingError, verbose bool)
PrintSummary prints the summary in text format.
func (*Metrics) Reset ¶
func (m *Metrics) Reset()
Reset clears all metrics and resets the start time.
func (*Metrics) SummaryAsString ¶
func (m *Metrics) SummaryAsString(errors []ProcessingError, skippedFiles []ProcessingError, summaryOpts *SummaryOptions) (string, error)
SummaryAsString generates and returns the processing summary in the requested format.
func (*Metrics) ToJSONFile ¶
func (m *Metrics) ToJSONFile(errors []ProcessingError, skippedFiles []ProcessingError, outputPath string) (err error)
ToJSONFile writes the summary to a JSON file. Returns any write or close errors that occur.
type ProcessingError ¶
type ProcessingError struct {
Source string `json:"source"` // Source file path
Dest string `json:"dest,omitempty"` // Expected output file path (if applicable)
Message string `json:"message,omitempty"`
Reason string `json:"reason,omitempty"` // Why it was skipped
SkipType SkipType `json:"skip_type,omitempty"` // Type of skip reason
}
ProcessingError stores detailed error info.
func CollectErrors ¶
func CollectErrors(errorsChan <-chan ProcessingError) []ProcessingError
CollectErrors collects and aggregates errors or skipped files.
func FormatError ¶
func FormatError(filePath string, err error) ProcessingError
FormatError formats errors for logging.
func FormatSkipReason ¶
func FormatSkipReason(skipped SkippedFile) ProcessingError
FormatSkipReason creates a structured skip log entry.
type SkipType ¶
type SkipType string
SkipType defines the type of skipped reason.
const ( SkipUnsupportedFile SkipType = "unsupported_file" // Not CSS/JS SkipMismatchedPath SkipType = "mismatched_output" // Structure mismatch SkipMissingTemplFile SkipType = "missing_templ" // Missing templ file matches SkipUnchangedFile SkipType = "unchanged_file" // File not changed SkipQueueFull SkipType = "queue_full" // job queue is full SkipExcluded SkipType = "user_skipped" // Excluded by user )
type SkippedFile ¶
type SkippedFile struct {
Source string // Path to the source file
Dest string // Expected output file path (if applicable)
InputDir string // Root input directory
OutputDir string // Root output directory
Reason string // Why the file was skipped
SkipType SkipType // Type of skip reason
}
SkippedFile holds metadata about a skipped file.
type SummaryFormat ¶
type SummaryFormat string
SummaryFormat defines available summary output formats.
const ( FormatNone SummaryFormat = "none" FormatLong SummaryFormat = "long" FormatCompact SummaryFormat = "compact" FormatJSON SummaryFormat = "json" )
type SummaryOptions ¶
type SummaryOptions struct {
Format SummaryFormat // Output format: text, json, none
ReportFile string // File path to export JSON summary
IsVerbose bool
}
SummaryOptions holds configuration for summary output.
type WorkerPoolManager ¶
type WorkerPoolManager struct {
JobChan chan Job
ErrorsChan chan ProcessingError
SkippedChan chan ProcessingError
Metrics *Metrics
Factory processor.ProcessorFactoryInterface
InputDir string
OutputDir string
MarkerName string
ExecutionTimes []JobExecutionTime
// contains filtered or unexported fields
}
WorkerPoolManager manages worker lifecycle.
func NewWorkerPoolManager ¶
func NewWorkerPoolManager(opts WorkerPoolOptions) *WorkerPoolManager
NewWorkerPoolManager initializes a worker pool manager. Paths are pre-cleaned to avoid repeated cleaning in hot loops. Panics if opts.NumWorkers is not positive, as this is a programming error.
func (*WorkerPoolManager) StartWorkers ¶
func (m *WorkerPoolManager) StartWorkers(ctx context.Context, numWorkers int, trackExecution bool) error
StartWorkers launches worker goroutines using `errgroup`.
type WorkerPoolOption ¶ added in v0.3.0
type WorkerPoolOption func(*WorkerPoolOptions)
WorkerPoolOption is a functional option for WorkerPoolOptions.
func WithExcludeDir ¶ added in v0.3.0
func WithExcludeDir(dir string) WorkerPoolOption
WithExcludeDir sets the directory to exclude from processing.
func WithForce ¶ added in v0.3.0
func WithForce(force bool) WorkerPoolOption
WithForce enables force processing, ignoring modification timestamps.
func WithMarkerName ¶ added in v0.3.0
func WithMarkerName(name string) WorkerPoolOption
WithMarkerName sets the guard marker name used in .templ files.
func WithNumWorkers ¶ added in v0.3.0
func WithNumWorkers(n int) WorkerPoolOption
WithNumWorkers sets the number of concurrent workers.
func WithProduction ¶ added in v0.3.0
func WithProduction(prod bool) WorkerPoolOption
WithProduction enables production mode (minification).
func WithTrackExecutionTime ¶ added in v0.3.0
func WithTrackExecutionTime(track bool) WorkerPoolOption
WithTrackExecutionTime enables per-file execution time tracking.
type WorkerPoolOptions ¶
type WorkerPoolOptions struct {
Context context.Context
InputDir string
OutputDir string
ExcludeDir string
MarkerName string
NumWorkers int
IsProduction bool // If `--prod` is set, process everything
IsForce bool // If `--force` is set, process everything
IsTrackExecutionTime bool
}
WorkerPoolOptions holds configuration for the worker pool.
func NewWorkerPoolOptions ¶ added in v0.3.0
func NewWorkerPoolOptions(ctx context.Context, inputDir, outputDir string, opts ...WorkerPoolOption) (WorkerPoolOptions, error)
NewWorkerPoolOptions constructs a WorkerPoolOptions with required fields and applies any functional options. NumWorkers defaults to runtime.NumCPU() * 2 when not set. Returns an error if NumWorkers is not positive after applying options.