This commit is contained in:
Liang Ding 2023-05-05 15:38:44 +08:00
parent da31f5a7a6
commit 93dad2bfb2
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -391,34 +391,34 @@ func incPackageDownloads(repoURLHash, systemID string) {
}
func installPackage(data []byte, installPath string) (err error) {
dir := filepath.Join(util.TempDir, "bazaar", "package")
if err = os.MkdirAll(dir, 0755); nil != err {
tmpPackage := filepath.Join(util.TempDir, "bazaar", "package")
if err = os.MkdirAll(tmpPackage, 0755); nil != err {
return
}
name := gulu.Rand.String(7)
tmp := filepath.Join(dir, name+".zip")
tmp := filepath.Join(tmpPackage, name+".zip")
if err = os.WriteFile(tmp, data, 0644); nil != err {
return
}
unzipPath := filepath.Join(dir, name)
unzipPath := filepath.Join(tmpPackage, name)
if err = gulu.Zip.Unzip(tmp, unzipPath); nil != err {
logging.LogErrorf("write file [%s] failed: %s", installPath, err)
err = errors.New("write file failed")
return
}
dirName := filepath.Base(installPath)
dirs, err := os.ReadDir(unzipPath)
if nil != err {
return
}
for _, d := range dirs {
if d.IsDir() && strings.Contains(d.Name(), "-") {
dir = d.Name()
break
}
srcPath := unzipPath
if 1 == len(dirs) && dirs[0].IsDir() && strings.HasPrefix(dirs[0].Name(), dirName+"-") {
srcPath = filepath.Join(unzipPath, dirs[0].Name())
}
srcPath := filepath.Join(unzipPath, dir)
if err = filelock.Copy(srcPath, installPath); nil != err {
return
}