func loadPackageSpecFromDir()

in sg/internal/policy/package_spec.go [45:59]


func loadPackageSpecFromDir(dir string) (PackageSpec, error) {
	specFile := filepath.Join(dir, PackageSpecFileName)
	if b, err := os.ReadFile(specFile); err != nil {
		if os.IsNotExist(err) {
			return defaultPackageSpec(), nil
		}
		return PackageSpec{}, fmt.Errorf("failed to read package spec file: %w", err)
	} else {
		var spec PackageSpec
		if err := yaml.Unmarshal(b, &spec); err != nil {
			return PackageSpec{}, fmt.Errorf("failed to unmarshal package spec: %w", err)
		}
		return spec, nil
	}
}