Browse Source

Improve gendb and formatting

Exit after parsing srcinfo with db do it actually does something.
when using gendb dont bother generating srcinfos.
Improved the formatting for some things mainly downloading and parsing.
morganamilo 7 years ago
parent
commit
dab8f1b5d2
1 changed files with 91 additions and 34 deletions
  1. 91 34
      install.go

+ 91 - 34
install.go

@@ -52,18 +52,13 @@ func install(parser *arguments) error {
 	}
 
 	//only error if direct targets or deps are missing
-	missing := make(stringSet)
-		for missingName := range dt.Missing {
+	for missingName := range dt.Missing {
 		if !remoteNamesCache.get(missingName) {
-			missing.set(missingName)
+			return fmt.Errorf(boldRedFgBlackBg(arrow+" Error: ") +
+				blackBg("Could not find all required package"))
 		}
 	}
 
-	if len(missing) > 0 {
-		printMissing(missing)
-		return fmt.Errorf("Could not find all required packages")
-	}
-
 	//create the arguments to pass for the repo install
 	arguments := parser.copy()
 	arguments.delArg("u", "sysupgrade")
@@ -124,7 +119,7 @@ func install(parser *arguments) error {
 	if len(arguments.targets) > 0 {
 		err := passToPacman(arguments)
 		if err != nil {
-			fmt.Println("Error installing repo packages.")
+			fmt.Errorf("Error installing repo packages.")
 		}
 	}
 
@@ -176,22 +171,33 @@ func install(parser *arguments) error {
 				return err
 			}
 		}*/
-
-		if arguments.existsArg("gendb") {
-			fmt.Println("GenDB finished. No packages were installed")
-			return nil
-		}
-
+	
 		// if !continueTask("Proceed with install?", "nN") {
 		// 	return fmt.Errorf("Aborting due to user")
 		// }
 
+		//this downloads the package build sources but also causes
+		//a version bumb for vsc packages
+		//that should not edit the sources so we should be safe to skip
+		//it and parse the srcinfo at the current version
+		if arguments.existsArg("gendb") {	
+			err = parsesrcinfosFile(dc.Aur, srcinfos, dc.Bases)
+			if err != nil {
+				return err
+			}
+
+
+			fmt.Println(boldGreenFg(arrow+" GenDB finished. No packages were installed"))
+			return nil
+		}
+
 		err = downloadPkgBuildsSources(dc.Aur)
 		if err != nil {
 			return err
 		}
 
-		err = parsesrcinfos(dc.Aur, srcinfos)
+
+		err = parsesrcinfosGenerate(dc.Aur, srcinfos, dc.Bases)
 		if err != nil {
 			return err
 		}
@@ -329,10 +335,67 @@ func askEditPkgBuilds(pkgs []*rpc.Pkg, bases map[string][]*rpc.Pkg) error {
 	return nil
 }
 
-func parsesrcinfos(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD) error {
-	for _, pkg := range pkgs {
+func updateVSCdb(pkgbuild *gopkg.PKGBUILD) {
+	for _, pkgsource := range pkgbuild.Source {
+		owner, repo := parseSource(pkgsource)
+		if owner != "" && repo != "" {
+			err := branchInfo(pkgbuild.Pkgbase, owner, repo)
+			if err != nil {
+				fmt.Println(err)
+			}
+		}
+	}
+}
+
+func parsesrcinfosFile(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD, bases map[string][]*rpc.Pkg) error {
+	for k, pkg := range pkgs {
 		dir := config.BuildDir + pkg.PackageBase + "/"
 
+		str := boldCyanFg("::") + boldFg(" Parsing SRCINFO (%d/%d): %s-%s")
+		str2 := ""
+		if len(bases[pkg.PackageBase]) > 1 || pkg.PackageBase != pkg.Name {
+			str2 += " ("
+			for _, split := range bases[pkg.PackageBase] {
+				str2 += split.Name + " "
+			}
+			str2 = str2[:len(str2)-1] + ")"
+		}
+		fmt.Printf(str, k+1, len(pkgs), pkg.PackageBase, pkg.Version)
+		fmt.Print(str2)
+		fmt.Println()
+
+
+		pkgbuild, err := gopkg.ParseSRCINFO(dir + ".SRCINFO")
+		if err != nil {
+			return fmt.Errorf("%s: %s", pkg.Name, err)
+		}
+
+		srcinfos[pkg.PackageBase] = pkgbuild
+		updateVSCdb(pkgbuild)
+	}
+
+	return nil
+}
+
+func parsesrcinfosGenerate(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD, bases map[string][]*rpc.Pkg) error {
+	for k, pkg := range pkgs {
+		dir := config.BuildDir + pkg.PackageBase + "/"
+
+		str := "Parsing SRCINFO (%d/%d): %s-%s"
+		str2 := ""
+		if len(bases[pkg.PackageBase]) > 1 || pkg.PackageBase != pkg.Name {
+			str2 += " ("
+			for _, split := range bases[pkg.PackageBase] {
+				str2 += split.Name + " "
+			}
+			str2 = str2[:len(str2)-1] + ")"
+		}
+		fmt.Printf(str, k+1, len(pkgs), pkg.PackageBase, pkg.Version)
+		fmt.Print(str2)
+		fmt.Println()
+
+
+		
 		cmd := exec.Command(config.MakepkgBin, "--printsrcinfo")
 		cmd.Stderr = os.Stderr
 		cmd.Dir = dir
@@ -348,33 +411,27 @@ func parsesrcinfos(pkgs []*rpc.Pkg, srcinfos map[string]*gopkg.PKGBUILD) error {
 		}
 
 		srcinfos[pkg.PackageBase] = pkgbuild
-
-		for _, pkgsource := range pkgbuild.Source {
-			owner, repo := parseSource(pkgsource)
-			if owner != "" && repo != "" {
-				err = branchInfo(pkg.Name, owner, repo)
-				if err != nil {
-					return err
-				}
-			}
-		}
+		updateVSCdb(pkgbuild)
 	}
 
 	return nil
 }
 
 func dowloadPkgBuilds(pkgs []*rpc.Pkg, bases map[string][]*rpc.Pkg) (err error) {
-	for _, pkg := range pkgs {
+	for k, pkg := range pkgs {
 		//todo make pretty
-		str := "Downloading: " + pkg.PackageBase + "-" + pkg.Version
+		str := boldCyanFg("::") + boldFg(" Downloading (%d/%d): %s-%s")
+		str2 := ""
 		if len(bases[pkg.PackageBase]) > 1 || pkg.PackageBase != pkg.Name {
-			str += " ("
+			str2 += " ("
 			for _, split := range bases[pkg.PackageBase] {
-				str += split.Name + " "
+				str2 += split.Name + " "
 			}
-			str = str[:len(str)-1] + ")"
+			str2 = str2[:len(str2)-1] + ")"
 		}
-		fmt.Println(str)
+		fmt.Printf(str, k+1, len(pkgs), pkg.PackageBase, pkg.Version)
+		fmt.Print(str2)
+		fmt.Println()
 
 		err = downloadAndUnpack(baseURL+pkg.URLPath, config.BuildDir, false)
 		if err != nil {