package main import ( "os" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/lib/protobuf/forgepb" "go.wit.com/lib/protobuf/gitpb" "go.wit.com/log" ) var workingRepo *gitpb.Repo func main() { me = new(mainType) me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args var err error me.forge, err = forgepb.Init() if err != nil { log.Info("This tool requires forge") badExit(err) } // attempt to clone, returns *gitpb.Repo workingRepo, err = clone(argv.Repo) if err != nil { badExit(err) } if argv.NonRecursive { if argv.AutoWork { autoWork() } if argv.Build { log.Info("STARTING BUILD", workingRepo.GetGoPath()) /* if err := makeValidGoSum(workingRepo); err != nil { badExit(err) } if err := build(); err != nil { badExit(err) } */ if workingRepo.GetRepoType() == "binary" || workingRepo.GetRepoType() == "plugin" { log.Info("build will probably fail", workingRepo.GetGoPath(), "is", workingRepo.GetRepoType()) } if err := me.forge.Build(workingRepo, nil); err != nil { log.Warn("BUILD FAILED", workingRepo.GetGoPath(), err) badExit(err) } } if argv.Install { log.Info("STARTING INSTALL", workingRepo.GetGoPath()) // can only install binary or plugin go packages if workingRepo.GetRepoType() == "binary" || workingRepo.GetRepoType() == "plugin" { log.Info("install will probably fail", workingRepo.GetGoPath(), "is", workingRepo.GetRepoType()) } if err := me.forge.Install(workingRepo, nil); err != nil { log.Warn("INSTALL FAILED", workingRepo.GetGoPath(), err) badExit(err) } } okExit("") } log.Info("STARTING RECURSIVE CLONE", workingRepo.GetGoPath()) if err := recursiveClone(workingRepo); err != nil { badExit(err) } okExit("") } func okExit(thing string) { if thing != "" { log.Info(thing, "ok") } log.Info("Finished clone on", workingRepo.GetGoPath(), "ok") me.forge.ConfigSave() os.Exit(0) } func badExit(err error) { log.Info("Total repositories:", me.forge.Repos.Len()) log.Info("Finished go-clone with error", err, me.forge.Config.ReposDir) os.Exit(-1) }