feat: download debian cache automatically
This commit is contained in:
parent
59febd75b0
commit
1d22902eb0
23
cache/cache.go
vendored
23
cache/cache.go
vendored
@ -10,6 +10,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/cavaliergopher/grab/v3"
|
"github.com/cavaliergopher/grab/v3"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
@ -62,3 +63,25 @@ func DownloadQemuImage(path, file string) (err error) {
|
|||||||
err = unpackTar(resp.Filename, path)
|
err = unpackTar(resp.Filename, path)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DownloadDebianCache(cachePath string) (err error) {
|
||||||
|
tmp, err := ioutil.TempDir(config.Dir("tmp"), "out-of-tree_")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tmp)
|
||||||
|
|
||||||
|
file := filepath.Base(cachePath)
|
||||||
|
|
||||||
|
fileurl, err := url.JoinPath(URL, file)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := grab.Get(tmp, fileurl)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return os.Rename(filepath.Join(tmp, resp.Filename), cachePath)
|
||||||
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
|
||||||
|
"code.dumpstack.io/tools/out-of-tree/cache"
|
||||||
"code.dumpstack.io/tools/out-of-tree/config"
|
"code.dumpstack.io/tools/out-of-tree/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -121,7 +122,6 @@ func kernelRelease(deb string) (r Release, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
CacheURL string
|
|
||||||
CachePath string
|
CachePath string
|
||||||
RefetchDays int = 7
|
RefetchDays int = 7
|
||||||
)
|
)
|
||||||
@ -130,6 +130,11 @@ func MatchImagePkg(km config.KernelMask) (pkgs []string, err error) {
|
|||||||
if CachePath == "" {
|
if CachePath == "" {
|
||||||
CachePath = config.File("debian.cache")
|
CachePath = config.File("debian.cache")
|
||||||
log.Debug().Msgf("Use default kernels cache path: %s", CachePath)
|
log.Debug().Msgf("Use default kernels cache path: %s", CachePath)
|
||||||
|
|
||||||
|
err = cache.DownloadDebianCache(CachePath)
|
||||||
|
if err != nil {
|
||||||
|
log.Debug().Msg("No remote cache, will take some time")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Debug().Msgf("Debian kernels cache path: %s", CachePath)
|
log.Debug().Msgf("Debian kernels cache path: %s", CachePath)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user