processor

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ApplyStage

type ApplyStage interface {
	Stage
	Apply(ctx context.Context, p Processor) error
}

ApplyStage applies modifications

type BaseProcessor

type BaseProcessor struct {
	// Core fields
	FilePath    string
	PackageName string
	Logger      *slog.Logger

	// Configuration
	Config       *melange.Configuration
	OriginalYAML []byte
	CurrentYAML  []byte

	// Version state
	CurrentVersion string
	LatestVersion  string
	VersionChanged bool
	OldVersion     string
	NewVersion     string

	// Epoch state
	CurrentEpoch int64
	NewEpoch     int64
	EpochChanged bool
	OldEpoch     int64

	// Change tracking
	Changes  []Change
	Messages []string
	Errors   []error

	// Options
	Options ProcessorOptions

	// Extensibility
	Context map[string]any
}

BaseProcessor provides a base implementation that can be embedded

func NewBaseProcessor

func NewBaseProcessor(filePath, packageName, currentVersion string, currentEpoch int64) *BaseProcessor

NewBaseProcessor creates a new base processor

func (*BaseProcessor) AddChange

func (bp *BaseProcessor) AddChange(change Change)

func (*BaseProcessor) AddError

func (bp *BaseProcessor) AddError(err error)

func (*BaseProcessor) AddMessage

func (bp *BaseProcessor) AddMessage(message string)

func (*BaseProcessor) GetChanges

func (bp *BaseProcessor) GetChanges() []Change

func (*BaseProcessor) GetConfig

func (bp *BaseProcessor) GetConfig() *melange.Configuration

func (*BaseProcessor) GetContext

func (bp *BaseProcessor) GetContext(key string) any

func (*BaseProcessor) GetCurrentEpoch

func (bp *BaseProcessor) GetCurrentEpoch() int64

func (*BaseProcessor) GetCurrentVersion

func (bp *BaseProcessor) GetCurrentVersion() string

func (*BaseProcessor) GetCurrentYAML

func (bp *BaseProcessor) GetCurrentYAML() []byte

func (*BaseProcessor) GetErrors

func (bp *BaseProcessor) GetErrors() []error

func (*BaseProcessor) GetFilePath

func (bp *BaseProcessor) GetFilePath() string

Implementation of Processor interface

func (*BaseProcessor) GetLatestVersion

func (bp *BaseProcessor) GetLatestVersion() string

func (*BaseProcessor) GetLogger

func (bp *BaseProcessor) GetLogger() *slog.Logger

func (*BaseProcessor) GetMessages

func (bp *BaseProcessor) GetMessages() []string

func (*BaseProcessor) GetNewEpoch

func (bp *BaseProcessor) GetNewEpoch() int64

func (*BaseProcessor) GetOptions

func (bp *BaseProcessor) GetOptions() ProcessorOptions

func (*BaseProcessor) GetOriginalYAML

func (bp *BaseProcessor) GetOriginalYAML() []byte

func (*BaseProcessor) GetPackageName

func (bp *BaseProcessor) GetPackageName() string

func (*BaseProcessor) HasChanges

func (bp *BaseProcessor) HasChanges() bool

func (*BaseProcessor) HasFileChanges

func (bp *BaseProcessor) HasFileChanges() bool

func (*BaseProcessor) IsEpochChanged

func (bp *BaseProcessor) IsEpochChanged() bool

func (*BaseProcessor) IsVersionChanged

func (bp *BaseProcessor) IsVersionChanged() bool

func (*BaseProcessor) SetContext

func (bp *BaseProcessor) SetContext(key string, value any)

func (*BaseProcessor) SetCurrentYAML

func (bp *BaseProcessor) SetCurrentYAML(yaml []byte)

func (*BaseProcessor) SetEpochUpdate

func (bp *BaseProcessor) SetEpochUpdate(old, new int64)

func (*BaseProcessor) SetOptions

func (bp *BaseProcessor) SetOptions(opts ProcessorOptions)

func (*BaseProcessor) SetVersionUpdate

func (bp *BaseProcessor) SetVersionUpdate(old, new string)

type BaseStage

type BaseStage struct {
	StageName        string
	StageDescription string
}

BaseStage provides common functionality for stages

func (*BaseStage) Description

func (bs *BaseStage) Description() string

func (*BaseStage) Name

func (bs *BaseStage) Name() string

func (*BaseStage) ShouldRun

func (bs *BaseStage) ShouldRun(ctx context.Context, p Processor) (bool, error)

DefaultShouldRun implementation - always run unless overridden

type Change

type Change struct {
	Type        string `json:"type"`        // "version", "epoch", "pipeline", "security"
	Field       string `json:"field"`       // specific field changed
	OldValue    string `json:"old_value"`   // previous value
	NewValue    string `json:"new_value"`   // new value
	Description string `json:"description"` // human-readable description
	Reason      string `json:"reason"`      // why the change was made
}

Change represents a modification made to the package

type CheckStage

type CheckStage interface {
	Stage
	Check(ctx context.Context, p Processor) error
}

CheckStage performs checks without modifications

type ExecutableStage

type ExecutableStage interface {
	Stage
	Execute(ctx context.Context, p Processor) error
}

ExecutableStage is a stage that can be executed (generic execution)

type MessageTagger added in v0.4.0

type MessageTagger interface {
	TagMessages(stage string, from int)
}

MessageTagger is optionally implemented by a processor that attributes its messages to the stage that added them: after each stage (run or skipped) Execute passes the stage name and the message count before it.

type Pipeline

type Pipeline struct {
	Name    string
	Stages  []Stage
	Options PipelineOptions
}

Pipeline represents a sequence of stages that operate on a processor

func NewPipeline

func NewPipeline(name string) *Pipeline

NewPipeline creates a new pipeline

func (*Pipeline) AddStages

func (p *Pipeline) AddStages(stages ...Stage)

AddStages adds multiple stages to the pipeline

func (*Pipeline) Execute

func (p *Pipeline) Execute(ctx context.Context, processor Processor) error

Execute runs the pipeline on the given processor

type PipelineOptions

type PipelineOptions struct {
	StopOnError       bool // Stop execution if a stage fails
	SkipValidation    bool // Skip validation stages
	ParallelExecution bool // Enable parallel execution of independent stages (future enhancement)
}

PipelineOptions configures pipeline behavior

type Processor

type Processor interface {
	// Identity
	GetFilePath() string
	GetPackageName() string
	GetLogger() *slog.Logger

	// Configuration
	GetConfig() *melange.Configuration
	GetOriginalYAML() []byte
	GetCurrentYAML() []byte
	SetCurrentYAML([]byte)

	// Version tracking
	GetCurrentVersion() string
	GetLatestVersion() string
	SetVersionUpdate(old, new string)
	IsVersionChanged() bool

	// Epoch tracking
	GetCurrentEpoch() int64
	GetNewEpoch() int64
	SetEpochUpdate(old, new int64)
	IsEpochChanged() bool

	// Change tracking
	AddChange(Change)
	GetChanges() []Change
	HasChanges() bool
	HasFileChanges() bool

	// Messaging
	AddMessage(string)
	AddError(error)
	GetMessages() []string
	GetErrors() []error

	// Options
	GetOptions() ProcessorOptions
	SetOptions(ProcessorOptions)

	// Context for custom data
	GetContext(key string) any
	SetContext(key string, value any)
}

Processor defines the core interface for all package processors

type ProcessorOptions

type ProcessorOptions struct {
	DryRun       bool   `json:"dry_run"`
	Force        bool   `json:"force"`
	BackupSuffix string `json:"backup_suffix"`
	TempDir      string `json:"temp_dir"`
}

ProcessorOptions contains configuration for package processing

type Stage

type Stage interface {
	Name() string
	Description() string

	// Conditional execution - stages can decide if they should run
	ShouldRun(ctx context.Context, p Processor) (bool, error)
}

Stage represents a single processing step

type ValidatingStage

type ValidatingStage interface {
	Stage
	Validate(ctx context.Context, p Processor) error
}

ValidatingStage can validate its preconditions before execution

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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