Documentation
¶
Index ¶
- Constants
- func CompareSemanticVersions(left, right string) (int, error)
- func Find(start, explicit string) (string, error)
- func LoadYAMLStrict(path string, target any) error
- func SaveBaseline(path string, baseline BaselineFile) error
- func SaveCatalogLock(path string, lock CatalogLock) error
- func SaveLock(path string, lock Lock) error
- func SavePack(path string, pack Pack) error
- func SaveProject(path string, project Project) error
- func SaveWaivers(path string, waivers WaiverFile) error
- func ValidateBaseline(baseline BaselineFile) error
- func ValidateOCIReference(value string) error
- func ValidatePackCompatibility(pack *Pack, toolVersion string) error
- func ValidateRule(rule sdk.Rule) []string
- func ValidateWaiver(waiver Waiver, now time.Time) error
- func ValidateWaiverForProject(waiver Waiver, now time.Time, requireApprover bool) error
- type BaselineEntry
- type BaselineFile
- type Catalog
- type CatalogEntry
- type CatalogLock
- type Compatibility
- type Date
- type Lock
- type LockedPack
- type Pack
- type PackRef
- type Parameter
- type Project
- type ResourceBudgets
- type TrustPolicy
- type TrustRequirement
- type Waiver
- type WaiverFile
- type Workspace
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
CompareSemanticVersions returns -1, 0, or 1 using SemVer precedence. Build metadata is ignored; numeric prerelease identifiers sort before text.
func LoadYAMLStrict ¶
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 SaveProject ¶
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 ValidatePackCompatibility ¶ added in v0.2.0
func ValidateRule ¶
Types ¶
type BaselineEntry ¶ added in v0.2.0
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
type CatalogEntry ¶ added in v0.2.0
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 Lock ¶
type Lock struct {
Version int `json:"version"`
Packs []LockedPack `json:"packs"`
}
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"`
}
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 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 ¶
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"`
}
Click to show internal directories.
Click to hide internal directories.