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.
This commit is contained in:
morganamilo 2018-02-19 06:52:11 +00:00
parent 46cc1f2c09
commit dab8f1b5d2
No known key found for this signature in database
GPG key ID: 6FE9E7996B0B082E

View file

@ -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 {