35 lines
713 B
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 }
|