config

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CurrentVersion = 1

	DefaultFilename = "hoolicy.yaml"
	DefaultLockfile = "hoolicy.lock"
	DefaultWaivers  = ".hoolicy/waivers.yaml"
	DefaultBaseline = ".hoolicy/baseline.json"
	DefaultTrust    = ".hoolicy/trust.yaml"
	DefaultEvidence = ".hoolicy/evidence.yaml"
)

Variables

This section is empty.

Functions

func CompareSemanticVersions added in v0.2.0

func CompareSemanticVersions(left, right string) (int, error)

CompareSemanticVersions returns -1, 0, or 1 using SemVer precedence. Build metadata is ignored; numeric prerelease identifiers sort before text.

func Find

func Find(start, explicit string) (string, error)

func LoadYAMLStrict

func LoadYAMLStrict(path string, target any) error

func SaveBaseline added in v0.2.0

func SaveBaseline(path string, baseline BaselineFile) error

func SaveCatalogLock added in v0.2.0

func SaveCatalogLock(path string, lock CatalogLock) error

func SaveLock

func SaveLock(path string, lock Lock) error

func SavePack added in v0.2.0

func SavePack(path string, pack Pack) error

func SaveProject

func SaveProject(path string, project Project) error

func SaveWaivers added in v0.2.0

func SaveWaivers(path string, waivers WaiverFile) error

func ValidateBaseline added in v0.2.0

func ValidateBaseline(baseline BaselineFile) error

func ValidateOCIReference added in v0.2.0

func ValidateOCIReference(value string) error

func ValidatePackCompatibility added in v0.2.0

func ValidatePackCompatibility(pack *Pack, toolVersion string) error

func ValidateRule

func ValidateRule(rule sdk.Rule) []string

func ValidateWaiver

func ValidateWaiver(waiver Waiver, now time.Time) error

func ValidateWaiverForProject added in v0.2.0

func ValidateWaiverForProject(waiver Waiver, now time.Time, requireApprover bool) error

Types

type BaselineEntry added in v0.2.0

type BaselineEntry struct {
	Fingerprint   string       `json:"fingerprint"`
	RuleID        string       `json:"ruleId"`
	Severity      sdk.Severity `json:"severity"`
	PolicyDigest  string       `json:"policyDigest"`
	FindingDigest string       `json:"findingDigest"`
	CreatedAt     time.Time    `json:"createdAt"`
}

type BaselineFile added in v0.2.0

type BaselineFile struct {
	Version      int             `json:"version"`
	Project      string          `json:"project"`
	CreatedAt    time.Time       `json:"createdAt"`
	ToolVersion  string          `json:"toolVersion"`
	Revision     string          `json:"revision,omitempty"`
	PolicyDigest string          `json:"policyDigest"`
	Entries      []BaselineEntry `json:"entries"`
}

func LoadBaseline added in v0.2.0

func LoadBaseline(path string) (*BaselineFile, error)

type Catalog added in v0.2.0

type Catalog struct {
	Version     int            `json:"version"`
	Name        string         `json:"name"`
	GeneratedAt time.Time      `json:"generatedAt"`
	Packs       []CatalogEntry `json:"packs"`
}

func LoadCatalog added in v0.2.0

func LoadCatalog(path string) (*Catalog, error)

type CatalogEntry added in v0.2.0

type CatalogEntry struct {
	Name    string `json:"name"`
	Release string `json:"release"`
	OCI     string `json:"oci"`
}

type CatalogLock added in v0.2.0

type CatalogLock struct {
	Version        int    `json:"version"`
	Source         string `json:"source"`
	ManifestDigest string `json:"manifestDigest"`
	CatalogDigest  string `json:"catalogDigest"`
	VerifiedBy     string `json:"verifiedBy"`
}

func LoadCatalogLock added in v0.2.0

func LoadCatalogLock(path string) (*CatalogLock, error)

type Compatibility added in v0.2.0

type Compatibility struct {
	Config  string `yaml:"config,omitempty" json:"config,omitempty"`
	Hoolicy string `yaml:"hoolicy,omitempty" json:"hoolicy,omitempty"`
}

type Date

type Date struct {
	time.Time
}

func (Date) MarshalJSON

func (d Date) MarshalJSON() ([]byte, error)

func (Date) MarshalYAML

func (d Date) MarshalYAML() (any, error)

func (*Date) UnmarshalYAML

func (d *Date) UnmarshalYAML(node *yaml.Node) error

type Lock

type Lock struct {
	Version int          `json:"version"`
	Packs   []LockedPack `json:"packs"`
}

func LoadLock

func LoadLock(path string) (*Lock, error)

type LockedPack

type LockedPack struct {
	Name           string `json:"name"`
	Git            string `json:"git"`
	Ref            string `json:"ref"`
	Subdir         string `json:"subdir,omitempty"`
	Commit         string `json:"commit"`
	Digest         string `json:"digest"`
	Vendor         string `json:"vendor"`
	Release        string `json:"release,omitempty"`
	OCI            string `json:"oci,omitempty"`
	ManifestDigest string `json:"manifestDigest,omitempty"`
	PackDigest     string `json:"packDigest,omitempty"`
	VerifiedBy     string `json:"verifiedBy,omitempty"`
}

type Pack

type Pack struct {
	Version            int                  `yaml:"version" json:"version"`
	Name               string               `yaml:"name" json:"name"`
	Release            string               `yaml:"release" json:"release"`
	Description        string               `yaml:"description" json:"description"`
	Maturity           string               `yaml:"maturity,omitempty" json:"maturity,omitempty"`
	Owner              string               `yaml:"owner,omitempty" json:"owner,omitempty"`
	CompatibilityNotes string               `yaml:"compatibilityNotes,omitempty" json:"compatibilityNotes,omitempty"`
	Compatibility      Compatibility        `yaml:"compatibility,omitempty" json:"compatibility,omitempty"`
	Parameters         map[string]Parameter `yaml:"parameters,omitempty" json:"parameters,omitempty"`
	Rules              []sdk.Rule           `yaml:"rules" json:"rules"`
}

func LoadPack

func LoadPack(path string) (*Pack, error)

func (*Pack) Instantiate

func (p *Pack) Instantiate(values map[string]any) ([]sdk.Rule, error)

type PackRef

type PackRef struct {
	Name   string         `yaml:"name" json:"name"`
	Path   string         `yaml:"path,omitempty" json:"path,omitempty"`
	Git    string         `yaml:"git,omitempty" json:"git,omitempty"`
	Ref    string         `yaml:"ref,omitempty" json:"ref,omitempty"`
	Subdir string         `yaml:"subdir,omitempty" json:"subdir,omitempty"`
	OCI    string         `yaml:"oci,omitempty" json:"oci,omitempty"`
	With   map[string]any `yaml:"with,omitempty" json:"with,omitempty"`
}

type Parameter

type Parameter struct {
	Type        string `yaml:"type" json:"type"`
	Required    bool   `yaml:"required,omitempty" json:"required,omitempty"`
	Description string `yaml:"description" json:"description"`
	Default     any    `yaml:"default,omitempty" json:"default,omitempty"`
}

type Project

type Project struct {
	Version               int             `yaml:"version" json:"version"`
	Project               string          `yaml:"project" json:"project"`
	FailOn                sdk.Severity    `yaml:"failOn,omitempty" json:"failOn,omitempty"`
	Waivers               string          `yaml:"waivers,omitempty" json:"waivers,omitempty"`
	Baseline              string          `yaml:"baseline,omitempty" json:"baseline,omitempty"`
	Trust                 string          `yaml:"trust,omitempty" json:"trust,omitempty"`
	Evidence              string          `yaml:"evidence,omitempty" json:"evidence,omitempty"`
	RequireWaiverApprover bool            `yaml:"requireWaiverApprover,omitempty" json:"requireWaiverApprover,omitempty"`
	Workspaces            []Workspace     `yaml:"workspaces,omitempty" json:"workspaces,omitempty"`
	Budgets               ResourceBudgets `yaml:"budgets,omitempty" json:"budgets,omitempty"`
	Parameters            map[string]any  `yaml:"parameters,omitempty" json:"parameters,omitempty"`
	Packs                 []PackRef       `yaml:"packs,omitempty" json:"packs,omitempty"`
	Rules                 []sdk.Rule      `yaml:"rules,omitempty" json:"rules,omitempty"`
	Root                  string          `yaml:"-" json:"-"`
	Path                  string          `yaml:"-" json:"-"`
}

func LoadProject

func LoadProject(path string) (*Project, error)

func (*Project) Validate

func (p *Project) Validate() error

type ResourceBudgets added in v0.2.0

type ResourceBudgets struct {
	MaximumFiles         int    `yaml:"maximumFiles,omitempty" json:"maximumFiles,omitempty"`
	MaximumDocumentBytes int64  `yaml:"maximumDocumentBytes,omitempty" json:"maximumDocumentBytes,omitempty"`
	MaximumFindings      int    `yaml:"maximumFindings,omitempty" json:"maximumFindings,omitempty"`
	MaximumRuleDuration  string `yaml:"maximumRuleDuration,omitempty" json:"maximumRuleDuration,omitempty"`
	MaximumTotalDuration string `yaml:"maximumTotalDuration,omitempty" json:"maximumTotalDuration,omitempty"`
}

type TrustPolicy added in v0.2.0

type TrustPolicy struct {
	Version      int                `yaml:"version" json:"version"`
	Requirements []TrustRequirement `yaml:"requirements" json:"requirements"`
}

func LoadTrust added in v0.2.0

func LoadTrust(path string) (*TrustPolicy, error)

type TrustRequirement added in v0.2.0

type TrustRequirement struct {
	Name     string `yaml:"name" json:"name"`
	Registry string `yaml:"registry" json:"registry"`
	Identity string `yaml:"identity,omitempty" json:"identity,omitempty"`
	Issuer   string `yaml:"issuer,omitempty" json:"issuer,omitempty"`
	Key      string `yaml:"key,omitempty" json:"key,omitempty"`
}

type Waiver

type Waiver struct {
	ID           string   `yaml:"id" json:"id"`
	Rule         string   `yaml:"rule" json:"rule"`
	Fingerprints []string `yaml:"fingerprints,omitempty" json:"fingerprints,omitempty"`
	Paths        []string `yaml:"paths,omitempty" json:"paths,omitempty"`
	Reason       string   `yaml:"reason" json:"reason"`
	Owner        string   `yaml:"owner" json:"owner"`
	Ticket       string   `yaml:"ticket" json:"ticket"`
	Approver     string   `yaml:"approver,omitempty" json:"approver,omitempty"`
	Created      Date     `yaml:"created" json:"created"`
	Expires      Date     `yaml:"expires" json:"expires"`
}

type WaiverFile

type WaiverFile struct {
	Version int      `yaml:"version" json:"version"`
	Waivers []Waiver `yaml:"waivers" json:"waivers"`
}

func LoadWaivers

func LoadWaivers(path string) (*WaiverFile, error)

type Workspace added in v0.2.0

type Workspace struct {
	Name       string         `yaml:"name" json:"name"`
	Paths      []string       `yaml:"paths" json:"paths"`
	Owner      string         `yaml:"owner" json:"owner"`
	Packs      []string       `yaml:"packs,omitempty" json:"packs,omitempty"`
	Parameters map[string]any `yaml:"parameters,omitempty" json:"parameters,omitempty"`
	DependsOn  []string       `yaml:"dependsOn,omitempty" json:"dependsOn,omitempty"`
}

Jump to

Keyboard shortcuts

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