func loadRulesFromModule()

in sg/internal/policy/rule.go [38:62]


func loadRulesFromModule(module *ast.Module) []Rule {
	var rv []Rule

	moduleNamespace := strings.Replace(module.Package.Path.String(), "data.", "", 1)

	for _, regoRule := range module.Rules {
		ruleString := regoRule.Head.Name.String()
		ps := queryRegex.FindAllStringSubmatch(ruleString, -1)
		if len(ps) != 1 || len(ps[0]) != 3 {
			continue
		}
		parsed := ps[0]

		rule := Rule{
			Kind:           QueryKind(parsed[1]),
			Name:           strings.TrimPrefix(ruleString, parsed[1]+"_"),
			Namespace:      moduleNamespace,
			SourceLocation: regoRule.Location,
		}

		rv = append(rv, rule)
	}

	return rv
}