~dricottone/simple-builder

ref: 5ff721ed25aaf42129097fd6699b91f923612053 simple-builder/sourcetree.go -rw-r--r-- 1.0 KiB
5ff721edDominic Ricottone Allow empty repos 6 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package main

import (
	"errors"
	"fmt"
	"os"
	"path"
)

// Walk a local directory to identify package sources.
//
// Package sources should be organized like:
// ```
// root
//  - package1
//     - APKBUILD
//     - ...
//  - ...
// ```
// Any files not matching `APKBUILD` are ignored.
// Any directories not containing an `APKBUILD` file are ignored.
// Any files directly under the root are ignored.
func walk_package_sources(root string) ([]Package, error) {
	packages := []Package{}

	members, err := os.ReadDir(root)
	if (err != nil) {
		return nil, err
	}

	for _, member := range members {
		if (member.IsDir() == true) {
			name := member.Name()
			pkg := new_package(name)

			err = find_apkbuild(&pkg, path.Join(root, name))
			if (err != nil) {
				debug(fmt.Sprintf("DEBUG-PKGSRC:%s", err))
			} else {
				packages = append(packages, pkg)
				debug(fmt.Sprintf("DEBUG-PKGSRC:Package %s found", name))
			}
		}
	}

	if (len(packages) == 0) {
		return nil, errors.New("No packages found")
	}

	return packages, nil
}