80 lines
1.2 KiB
Go
80 lines
1.2 KiB
Go
package debian
|
|
|
|
import (
|
|
"os/user"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
|
|
"code.dumpstack.io/tools/out-of-tree/config"
|
|
)
|
|
|
|
type CodeName int
|
|
|
|
const (
|
|
Wheezy CodeName = iota
|
|
Jessie
|
|
Stretch
|
|
Buster
|
|
Bullseye
|
|
Bookworm
|
|
)
|
|
|
|
var CodeNameStrings = [...]string{
|
|
"Wheezy",
|
|
"Jessie",
|
|
"Stretch",
|
|
"Buster",
|
|
"Bullseye",
|
|
"Bookworm",
|
|
}
|
|
|
|
func (cn CodeName) String() string {
|
|
return CodeNameStrings[cn]
|
|
}
|
|
|
|
var (
|
|
CachePath string
|
|
RefetchDays int = 7
|
|
)
|
|
|
|
func MatchImagePkg(km config.KernelMask) (pkgs []string, err error) {
|
|
if CachePath == "" {
|
|
var usr *user.User
|
|
usr, err = user.Current()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
CachePath = usr.HomeDir + "/.out-of-tree/debian.cache"
|
|
log.Debug().Msgf("Use default kernels cache path: %s", CachePath)
|
|
} else {
|
|
log.Debug().Msgf("Debian kernels cache path: %s", CachePath)
|
|
}
|
|
|
|
c, err := NewCache(CachePath)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("cache")
|
|
return
|
|
}
|
|
defer c.Close()
|
|
|
|
kernels, err := GetKernels(c, RefetchDays)
|
|
if err != nil {
|
|
log.Error().Err(err).Msg("get kernels")
|
|
return
|
|
}
|
|
|
|
r := regexp.MustCompile(km.ReleaseMask)
|
|
|
|
for _, dk := range kernels {
|
|
p := strings.Replace(dk.Image.Deb.Name, ".deb", "", -1)
|
|
if r.MatchString(p) {
|
|
pkgs = append(pkgs, p)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|