about summary refs log tree commit diff stats
path: root/internal/importer/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/importer/utils.go')
-rw-r--r--internal/importer/utils.go35
1 files changed, 24 insertions, 11 deletions
diff --git a/internal/importer/utils.go b/internal/importer/utils.go
index 3977c2e..425b7bd 100644
--- a/internal/importer/utils.go
+++ b/internal/importer/utils.go
@@ -36,23 +36,36 @@ func ValueTypeToString(valueType jstream.ValueType) string {
 	return "very strange"
 }
 
-func makeRepoURL(repo config.Repository, subPath string, line string) string {
-	ref := repo.Revision
-	if ref == "" {
-		ref = "master"
-	}
-	url, _ := url.JoinPath("https://github.com/", repo.Owner, repo.Repo, "blob", ref, subPath)
-	if line != "" {
-		url = url + "#L" + line
-	}
+func makeRepoURL(repo config.Repository, subPath string, line string) (string, error) {
+	switch repo.Type {
+	case config.GitHub:
+		ref := repo.Revision
+		if ref == "" {
+			ref = "master"
+		}
+		url, _ := url.JoinPath("https://github.com/", repo.Owner, repo.Repo, "blob", ref, subPath)
+		if line != "" {
+			url = url + "#L" + line
+		}
 
-	return url
+		return url, nil
+	default:
+		return "", errors.Errorf(
+			"don't know how to generate a repository URL for %s",
+			repo.Type.String(),
+		)
+	}
 }
 
 func MakeChannelLink(repo config.Repository, subPath string) (*nix.Link, error) {
+	url, err := makeRepoURL(repo, subPath, "")
+	if err != nil {
+		return nil, err
+	}
+
 	return &nix.Link{
 		Name: fmt.Sprintf("<%s/%s>", repo.Repo, subPath),
-		URL:  makeRepoURL(repo, subPath, ""),
+		URL:  url,
 	}, nil
 }