keel/internal/policy/glob.go

35 lines
713 B
Go

package policy
import (
"fmt"
"strings"
"github.com/ryanuber/go-glob"
)
type GlobPolicy struct {
policy string // original string
pattern string // without prefix
}
func NewGlobPolicy(policy string) (*GlobPolicy, error) {
if strings.Contains(policy, ":") {
parts := strings.Split(policy, ":")
if len(parts) == 2 {
return &GlobPolicy{
policy: policy,
pattern: parts[1],
}, nil
}
}
return nil, fmt.Errorf("invalid glob policy: %s", policy)
}
func (p *GlobPolicy) ShouldUpdate(current, new string) (bool, error) {
return glob.Glob(p.pattern, new), nil
}
func (p *GlobPolicy) Name() string { return p.policy }
func (p *GlobPolicy) Type() PolicyType { return PolicyTypeGlob }