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