Skip to content

Commit

Permalink
checkpoint
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Ortel <[email protected]>
  • Loading branch information
jortel committed Aug 7, 2024
1 parent a98b2cc commit 2921c68
Showing 1 changed file with 48 additions and 46 deletions.
94 changes: 48 additions & 46 deletions cmd/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ func (r *Rules) Build() (err error) {
if err != nil {
return
}
err = r.ensureRuleSet()
if err != nil {
return
}
err = r.Labels.injectAlways(r.repositories)
if err != nil {
return
Expand Down Expand Up @@ -94,26 +98,8 @@ func (r *Rules) addFiles() (err error) {
if err != nil {
return
}
entries, err := os.ReadDir(ruleDir)
if err != nil {
return
}
for _, ent := range entries {
if ent.Name() == parser.RULE_SET_GOLDEN_FILE_NAME {
r.repositories = append(r.repositories, ruleDir)
r.append(ruleDir)
return
}
}
n := 0
for _, ent := range entries {
p := path.Join(ruleDir, ent.Name())
r.append(p)
n++
}
if n > 0 {
r.repositories = append(r.repositories, ruleDir)
}
r.rules = append(r.rules, ruleDir)
r.repositories = append(r.repositories, ruleDir)
return
}

Expand Down Expand Up @@ -205,22 +191,21 @@ func (r *Rules) addRules(ruleset *api.RuleSet) (err error) {
return
}
n := len(ruleset.Rules)
if n < 1 {
return
}
r.rules = append(r.rules, ruleDir)
for _, ruleset := range ruleset.Rules {
fileRef := ruleset.File
if fileRef == nil {
file := ruleset.File
if file == nil {
continue
}
path := path.Join(ruleDir, fileRef.Name)
err = addon.File.Get(ruleset.File.ID, path)
err = addon.File.Get(
ruleset.File.ID,
path.Join(ruleDir, file.Name))
if err != nil {
break
}
if n == 1 {
r.append(path)
}
}
if n > 1 {
r.append(ruleDir)
}
return
}
Expand Down Expand Up @@ -256,7 +241,7 @@ func (r *Rules) addRuleSetRepository(ruleset *api.RuleSet) (err error) {
}
ruleDir := path.Join(rootDir, ruleset.Repository.Path)
r.repositories = append(r.repositories, ruleDir)
r.append(ruleDir)
r.rules = append(r.rules, ruleDir)
return
}

Expand Down Expand Up @@ -289,7 +274,7 @@ func (r *Rules) addRepository() (err error) {
}
ruleDir := path.Join(rootDir, r.Repository.Path)
r.repositories = append(r.repositories, ruleDir)
r.append(ruleDir)
r.rules = append(r.rules, ruleDir)
return
}

Expand All @@ -306,12 +291,9 @@ func (r *Rules) addSelector(options *command.Options) (err error) {
// convert windup rules.
// Run the shim on all ruleset directories.
func (r *Rules) convert() (err error) {
var st os.FileInfo

for _, ruleDir := range r.rules {
st, err = os.Stat(ruleDir)
if !st.IsDir() {
continue
}

cmd := command.New("/usr/bin/windup-shim")
cmd.Options.Add("convert")
cmd.Options.Add("--outputdir", ruleDir)
Expand All @@ -324,19 +306,39 @@ func (r *Rules) convert() (err error) {
return
}

// append path.
func (r *Rules) append(p string) {
for i := range r.rules {
if r.rules[i] == p {
// ensureRuleSet ensures each ruleDir in rules
// contains a ruleset.yaml file.
func (r *Rules) ensureRuleSet() (err error) {
create := func(p string) (err error) {
f, err := os.Create(p)
if err != nil {
return
}
defer func() {
_ = f.Close()
}()
en := yaml.NewEncoder(f)
err = en.Encode(map[string]any{"name": path.Base(p)})
return
}
switch strings.ToUpper(path.Ext(p)) {
case "",
".YAML",
".YML":
r.rules = append(r.rules, p)
for _, ruleDir := range r.rules {
p := path.Join(
ruleDir,
parser.RULE_SET_GOLDEN_FILE_NAME)
_, err = os.Stat(p)
if err == nil {
continue
}
if os.IsNotExist(err) {
err = create(p)
if err != nil {
return
}
} else {
return
}
}
return
}

// Labels collection.
Expand Down

0 comments on commit 2921c68

Please sign in to comment.