summaryrefslogtreecommitdiff
path: root/doVerifyNamespace.go
diff options
context:
space:
mode:
Diffstat (limited to 'doVerifyNamespace.go')
-rw-r--r--doVerifyNamespace.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/doVerifyNamespace.go b/doVerifyNamespace.go
new file mode 100644
index 0000000..b3a6820
--- /dev/null
+++ b/doVerifyNamespace.go
@@ -0,0 +1,65 @@
+// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
+// Use of this source code is governed by the GPL 3.0
+
+package main
+
+import (
+ "errors"
+ "path/filepath"
+
+ "go.wit.com/lib/env"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+func cleanNamespace(r *gitpb.Repo) string {
+ // check for GO repos
+ gowork := env.Get("gopath")
+ // todo: detect if using go.work file
+ newpath, err := filepath.Rel(gowork, r.FullPath)
+ // log.Info("cleanNamespace()", newpath, gowork, "is gowork. fullpath:", r.FullPath)
+ if err == nil {
+ // log.Info("cleanNamespace returned", newpath)
+ // relative path to gosrc or gowork is the namespace
+ return newpath
+ }
+ log.Info("cleanNamespace got err", newpath, err)
+ // check for other stuff. use the URLs
+ return ""
+}
+
+// checks to see if the r.Namespace seems right
+func doVerifyNamespace() (string, error) {
+ var s string = "doVerifyNamespace()"
+ var err error
+ var counter int
+ for r := range me.forge.Repos.IterAll() {
+ newpath := cleanNamespace(r)
+ if newpath == "" {
+ // log.Info("didn't work", r.Namespace, "to", newpath)
+ // didn't work
+ } else if newpath == r.Namespace {
+ // already good namespace.
+ continue
+ } else if newpath != r.Namespace {
+ counter += 1
+ log.Info("Changed", r.FullPath, "to", newpath)
+ r.Namespace = newpath
+ continue
+ }
+ counter += 1
+ log.Info("cleanNamespace() didn't match", r.Namespace)
+ }
+ if counter != 0 {
+ err = errors.New(log.Sprintf("%d namespaces were invalid", counter))
+ }
+
+ if env.True("DryRun") {
+ return s, err
+ }
+ if counter != 0 {
+ me.forge.Repos.SaveVerbose()
+ }
+
+ return s, err
+}