aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorGrégoire Duchêne <gduchene@awhk.org>2020-03-26 22:03:15 +0000
committerGrégoire Duchêne <gduchene@awhk.org>2020-03-26 22:03:15 +0000
commitfeff62b8fcff9709dc6c7f0b56ce80a288367f29 (patch)
tree68fe8a643179ee60d83ec2a39e1f3a4e2ac77cde /internal
parent3216dc9b8d876f24ed561e81c2a1fb91926cb57a (diff)
Standardize the project layout
https://github.com/golang-standards/project-layout seems sensible.
Diffstat (limited to 'internal')
-rw-r--r--internal/lib.go27
-rw-r--r--internal/lib_test.go23
2 files changed, 50 insertions, 0 deletions
diff --git a/internal/lib.go b/internal/lib.go
new file mode 100644
index 0000000..742a9c7
--- /dev/null
+++ b/internal/lib.go
@@ -0,0 +1,27 @@
+// Copyright (c) 2019, Grégoire Duchêne <gduchene@awhk.org>
+//
+// Use of this source code is governed by the ISC license that can be
+// found in the LICENSE file.
+
+package internal
+
+import (
+ "fmt"
+ "os"
+ "strings"
+)
+
+func GetBody(pkg string) string {
+ dest := GetDest(os.Getenv("PREFIX"), os.Getenv("DEST"), pkg)
+ return fmt.Sprintf(`<!doctype html>
+<meta name="go-import" content="%s %s %s">
+<title>go-import-redirect</title>
+`, pkg, os.Getenv("VCS"), dest)
+}
+
+func GetDest(srcPrefix, destPrefix, pkg string) string {
+ srcPrefix = strings.TrimRight(srcPrefix, "/")
+ destPrefix = strings.TrimRight(destPrefix, "/")
+ path := strings.TrimLeft(strings.TrimPrefix(pkg, srcPrefix), "/")
+ return destPrefix + "/" + strings.Split(path, "/")[0]
+}
diff --git a/internal/lib_test.go b/internal/lib_test.go
new file mode 100644
index 0000000..19a880d
--- /dev/null
+++ b/internal/lib_test.go
@@ -0,0 +1,23 @@
+// Copyright (c) 2019, Grégoire Duchêne <gduchene@awhk.org>
+//
+// Use of this source code is governed by the ISC license that can be
+// found in the LICENSE file.
+
+package internal
+
+import "testing"
+
+func TestGetDest(t *testing.T) {
+ cs := []struct{ srcPrefix, destPrefix, pkg, expected string }{
+ {"src.example.com/x/", "https://example.com/git/", "src.example.com/x/foo", "https://example.com/git/foo"},
+ {"src.example.com/x/", "https://example.com/git/", "src.example.com/x/foo/bar", "https://example.com/git/foo"},
+ {"src.example.com/x", "https://example.com/git", "src.example.com/x/foo", "https://example.com/git/foo"},
+ {"src.example.com/x", "https://example.com/git", "src.example.com/x/foo/bar", "https://example.com/git/foo"},
+ }
+ for _, c := range cs {
+ actual := GetDest(c.srcPrefix, c.destPrefix, c.pkg)
+ if actual != c.expected {
+ t.Errorf("expected %s, got %s", c.expected, actual)
+ }
+ }
+}