Browse Source

:art: Init plugin system https://github.com/siyuan-note/siyuan/issues/8041

Liang Ding 2 years ago
parent
commit
93dad2bfb2
1 changed files with 10 additions and 10 deletions
  1. 10 10
      kernel/bazaar/package.go

+ 10 - 10
kernel/bazaar/package.go

@@ -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")
-	if err = os.MkdirAll(dir, 0755); nil != err {
+	tmpPackage := filepath.Join(util.TempDir, "bazaar", "package")
+	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(), "-") {
-			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 {
 	if err = filelock.Copy(srcPath, installPath); nil != err {
 		return
 		return
 	}
 	}