func loadPackageFromPath()

in sg/internal/policy/fs.go [20:51]


func loadPackageFromPath(path string) (Package, error) {
	rv := &FSPackage{
		qualifiedID: fsPackageQualifiedIDPrefix + path,
	}

	// load rules
	{
		policies, err := loader.AllRegos([]string{path})
		if err != nil {
			return nil, fmt.Errorf("failed to load policies: %w", err)
		}
		if len(policies.Modules) == 0 {
			return nil, fmt.Errorf("no policies found from path: %s", path)
		}

		rv.parsedModules = policies.ParsedModules()
		for _, module := range rv.parsedModules {
			rv.rules = append(rv.rules, loadRulesFromModule(module)...)
		}
	}

	// load package spec
	{
		projectSpec, err := loadPackageSpecFromDir(path)
		if err != nil {
			return nil, fmt.Errorf("failed to load package spec: %w", err)
		}
		rv.packageSpec = projectSpec
	}

	return rv, nil
}