]> ruderich.org/simon Gitweb - safcm/safcm.git/blob - cmd/safcm/config/packages.go
Use SPDX license identifiers
[safcm/safcm.git] / cmd / safcm / config / packages.go
1 // Config: parse packages.yaml
2
3 // SPDX-License-Identifier: GPL-3.0-or-later
4 // Copyright (C) 2021-2024  Simon Ruderich
5
6 package config
7
8 import (
9         "fmt"
10         "os"
11         "path/filepath"
12         "strings"
13
14         "gopkg.in/yaml.v2"
15 )
16
17 func LoadPackages(group string) ([]string, error) {
18         path := filepath.Join(group, "packages.yaml")
19
20         var res []string
21         x, err := os.ReadFile(path)
22         if err != nil {
23                 if os.IsNotExist(err) {
24                         return nil, nil
25                 }
26                 return nil, err
27         }
28         err = yaml.UnmarshalStrict(x, &res)
29         if err != nil {
30                 return nil, fmt.Errorf("%s: failed to load: %v", path, err)
31         }
32
33         // Sanity checks
34         for _, x := range res {
35                 if len(strings.Fields(x)) != 1 {
36                         return nil, fmt.Errorf(
37                                 "%s: package name %q must not contain whitespace",
38                                 path, x)
39                 }
40         }
41
42         return res, nil
43 }