소스 검색

fix(download): cloned reflects if package was pulled or cloned

jguer 3 년 전
부모
커밋
456d83ef51
5개의 변경된 파일31개의 추가작업 그리고 26개의 파일을 삭제
  1. 2 2
      pkg/download/abs.go
  2. 4 2
      pkg/download/abs_test.go
  3. 6 7
      pkg/download/aur.go
  4. 4 2
      pkg/download/aur_test.go
  5. 15 13
      pkg/download/unified.go

+ 2 - 2
pkg/download/abs.go

@@ -83,10 +83,10 @@ func ABSPKGBUILD(httpClient *http.Client, dbName, pkgName string) ([]byte, error
 }
 
 // ABSPKGBUILDRepo retrieves the PKGBUILD repository to a dest directory.
-func ABSPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, dbName, pkgName, dest string, force bool) error {
+func ABSPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, dbName, pkgName, dest string, force bool) (bool, error) {
 	pkgURL, err := getPackageRepoURL(dbName)
 	if err != nil {
-		return err
+		return false, err
 	}
 
 	return downloadGitRepo(cmdRunner, cmdBuilder, pkgURL,

+ 4 - 2
pkg/download/abs_test.go

@@ -201,8 +201,9 @@ func TestABSPKGBUILDRepo(t *testing.T) {
 			GitFlags: []string{"--no-replace-objects"},
 		},
 	}
-	err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", "/tmp/doesnt-exist", false)
+	newClone, err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", "/tmp/doesnt-exist", false)
 	assert.NoError(t, err)
+	assert.Equal(t, true, newClone)
 }
 
 // GIVEN a previous existing folder with permissions
@@ -224,6 +225,7 @@ func TestABSPKGBUILDRepoExistsPerms(t *testing.T) {
 			GitFlags: []string{"--no-replace-objects"},
 		},
 	}
-	err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", dir, false)
+	newClone, err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", dir, false)
 	assert.NoError(t, err)
+	assert.Equal(t, false, newClone)
 }

+ 6 - 7
pkg/download/aur.go

@@ -41,7 +41,7 @@ func AURPKGBUILD(httpClient *http.Client, pkgName string) ([]byte, error) {
 }
 
 // AURPkgbuildRepo retrieves the PKGBUILD repository to a dest directory.
-func AURPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, aurURL, pkgName, dest string, force bool) error {
+func AURPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, aurURL, pkgName, dest string, force bool) (bool, error) {
 	pkgURL := fmt.Sprintf("%s/%s.git", aurURL, pkgName)
 
 	return downloadGitRepo(cmdRunner, cmdBuilder, pkgURL, pkgName, dest, force)
@@ -67,15 +67,14 @@ func AURPKGBUILDRepos(
 		wg.Add(1)
 
 		go func(target string) {
-			err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, target, dest, force)
+			newClone, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, target, dest, force)
 
-			success := err == nil
-			if success {
+			if err != nil {
+				errs.Add(err)
+			} else {
 				mux.Lock()
-				cloned[target] = success
+				cloned[target] = newClone
 				mux.Unlock()
-			} else {
-				errs.Add(err)
 			}
 
 			text.OperationInfoln(

+ 4 - 2
pkg/download/aur_test.go

@@ -84,8 +84,9 @@ func TestAURPKGBUILDRepo(t *testing.T) {
 			GitFlags: []string{"--no-replace-objects"},
 		},
 	}
-	err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", "/tmp/doesnt-exist", false)
+	newCloned, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", "/tmp/doesnt-exist", false)
 	assert.NoError(t, err)
+	assert.Equal(t, true, newCloned)
 }
 
 // GIVEN a previous existing folder with permissions
@@ -107,6 +108,7 @@ func TestAURPKGBUILDRepoExistsPerms(t *testing.T) {
 			GitFlags: []string{"--no-replace-objects"},
 		},
 	}
-	err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", dir, false)
+	cloned, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", dir, false)
 	assert.NoError(t, err)
+	assert.Equal(t, false, cloned)
 }

+ 15 - 13
pkg/download/unified.go

@@ -23,13 +23,14 @@ type DBSearcher interface {
 }
 
 func downloadGitRepo(cmdRunner exe.Runner,
-	cmdBuilder exe.GitCmdBuilder, pkgURL, pkgName, dest string, force bool, gitArgs ...string) error {
+	cmdBuilder exe.GitCmdBuilder, pkgURL, pkgName, dest string, force bool, gitArgs ...string) (bool, error) {
 	finalDir := filepath.Join(dest, pkgName)
+	newClone := true
 
 	if _, err := os.Stat(filepath.Join(finalDir, ".git")); os.IsNotExist(err) || (err == nil && force) {
 		if _, errD := os.Stat(finalDir); force && errD == nil {
 			if errR := os.RemoveAll(finalDir); errR != nil {
-				return ErrGetPKGBUILDRepo{inner: errR, pkgName: pkgName, errOut: ""}
+				return false, ErrGetPKGBUILDRepo{inner: errR, pkgName: pkgName, errOut: ""}
 			}
 		}
 
@@ -42,10 +43,10 @@ func downloadGitRepo(cmdRunner exe.Runner,
 
 		_, stderr, errCapture := cmdRunner.Capture(cmd, 0)
 		if errCapture != nil {
-			return ErrGetPKGBUILDRepo{inner: errCapture, pkgName: pkgName, errOut: stderr}
+			return false, ErrGetPKGBUILDRepo{inner: errCapture, pkgName: pkgName, errOut: stderr}
 		}
 	} else if err != nil {
-		return ErrGetPKGBUILDRepo{
+		return false, ErrGetPKGBUILDRepo{
 			inner:   err,
 			pkgName: pkgName,
 			errOut:  gotext.Get("error reading %s", filepath.Join(dest, pkgName, ".git")),
@@ -55,11 +56,12 @@ func downloadGitRepo(cmdRunner exe.Runner,
 
 		_, stderr, errCmd := cmdRunner.Capture(cmd, 0)
 		if errCmd != nil {
-			return ErrGetPKGBUILDRepo{inner: errCmd, pkgName: pkgName, errOut: stderr}
+			return false, ErrGetPKGBUILDRepo{inner: errCmd, pkgName: pkgName, errOut: stderr}
 		}
+		newClone = false
 	}
 
-	return nil
+	return newClone, nil
 }
 
 func getURLName(pkg db.IPackage) string {
@@ -150,20 +152,20 @@ func PKGBUILDRepos(dbExecutor DBSearcher,
 
 		go func(target, dbName, pkgName string, aur bool) {
 			var err error
+			var newClone bool
 
 			if aur {
-				err = AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, pkgName, dest, force)
+				newClone, err = AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, pkgName, dest, force)
 			} else {
-				err = ABSPKGBUILDRepo(cmdRunner, cmdBuilder, dbName, pkgName, dest, force)
+				newClone, err = ABSPKGBUILDRepo(cmdRunner, cmdBuilder, dbName, pkgName, dest, force)
 			}
 
-			success := err == nil
-			if success {
+			if err != nil {
+				errs.Add(err)
+			} else {
 				mux.Lock()
-				cloned[target] = success
+				cloned[target] = newClone
 				mux.Unlock()
-			} else {
-				errs.Add(err)
 			}
 
 			if aur {