summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go67
1 files changed, 67 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..2f20bcd
--- /dev/null
+++ b/main.go
@@ -0,0 +1,67 @@
+package main
+
+import (
+ "os"
+
+ "go.wit.com/dev/alexflint/arg"
+ "go.wit.com/lib/protobuf/forgepb"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+// sent via -ldflags
+var VERSION string
+var BUILDTIME string
+
+var pp *arg.Parser
+var forge *forgepb.Forge
+var check *gitpb.Repo
+
+func main() {
+ log.Info("go-clean version", VERSION, "built on", BUILDTIME)
+ pp = arg.MustParse(&argv)
+
+ // for very new users or users unfamilar with the command line, this may help them
+ if argv.Repo == "help" || argv.Repo == "?" {
+ pp.WriteHelp(os.Stdout)
+ os.Exit(0)
+ }
+ if argv.Repo == "version" {
+ log.Info(argv.Version())
+ os.Exit(0)
+ }
+
+ // load the ~/.config/forge/ config
+ // this lets you configure repos you have read/write access too
+ forge = forgepb.Init()
+
+ check = forge.Repos.FindByGoPath(argv.Repo)
+ if check == nil {
+ log.Info("need to go-clone", argv.Repo)
+ return
+ }
+ log.Info("already have", argv.Repo)
+
+ log.Info("go src dir", forge.GetGoSrc())
+ // re-create go.sum and go.mod
+ check.RedoGoMod()
+ deps := check.GoDeps.SortByGoPath()
+ for deps.Scan() {
+ depRepo := deps.Next()
+ log.Info("download:", depRepo.GoPath)
+ _, err := forge.Build(depRepo.GoPath)
+ }
+ okExit("skipping build of " + argv.Repo)
+}
+
+func okExit(thing string) {
+ log.Info(thing, "ok")
+ log.Info("Finished clone on", check.GetGoPath(), "ok")
+ os.Exit(0)
+}
+
+func badExit(err error) {
+ log.Info("Total repositories:", forge.Repos.Len())
+ log.Info("Finished go-clean with error", err, forge.GetGoSrc())
+ os.Exit(-1)
+}