summaryrefslogtreecommitdiff
path: root/repomap.go
diff options
context:
space:
mode:
Diffstat (limited to 'repomap.go')
-rw-r--r--repomap.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/repomap.go b/repomap.go
new file mode 100644
index 0000000..cfedd19
--- /dev/null
+++ b/repomap.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "os"
+ "strings"
+
+ "go.wit.com/log"
+)
+
+func repomap() {
+ var changed bool = false
+ if argv.Repomap == "" {
+ return
+ }
+ data, _ := os.ReadFile(argv.Repomap)
+
+ for _, line := range strings.Split(string(data), "\n") {
+ if line == "" {
+ continue
+ }
+ if strings.HasPrefix(line, "#") {
+ continue
+ }
+ parts := strings.Fields(line)
+ gopath := parts[0]
+ url := "https://" + parts[1]
+ var comment string
+ if len(parts) > 1 {
+ comment = strings.Join(parts[2:], " ")
+ }
+ repo := me.forge.Repos.FindByGoPath(gopath)
+ if repo == nil {
+ if argv.Clone {
+ me.forge.Clone(gopath)
+ } else {
+ log.Info(gopath, "need to clone")
+ }
+ } else {
+ if repo.URL != url {
+ log.Info(gopath, "url wrong", repo.URL, "vs", url)
+ log.Info("\tcomment", comment)
+ repo.URL = url
+ changed = true
+ }
+ if repo.Desc != comment && !(comment == "") {
+ log.Info(gopath, "comment wrong", repo.Desc, "vs", comment)
+ repo.Desc = comment
+ changed = true
+ }
+ }
+ }
+
+ if changed {
+ me.forge.Repos.ConfigSave()
+ log.Info("config saved")
+ os.Exit(0)
+ }
+}