From 8e8c5c9cc35ef9b3de9b8d43919f27a39a1d75d3 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 20 May 2024 23:31:29 +0200 Subject: refactor: make repository URLs by Repo.Type (currently no change) "currently no change" because only GitHub repos are supported, but more ready to support other types --- internal/importer/package.go | 6 +++++- internal/importer/utils.go | 35 ++++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 12 deletions(-) diff --git a/internal/importer/package.go b/internal/importer/package.go index 5e9ad26..3fee8d7 100644 --- a/internal/importer/package.go +++ b/internal/importer/package.go @@ -225,6 +225,10 @@ func (i *PackageIngester) Process(parent context.Context) (<-chan nix.Importable pkgSet = "" } + url, err := makeRepoURL(i.source.Repo, subpath, line) + if err != nil { + errs <- err + } results <- &nix.Package{ Name: i.pkg.Name, Attribute: kv.Key, @@ -239,7 +243,7 @@ func (i *PackageIngester) Process(parent context.Context) (<-chan nix.Importable Platforms: i.pkg.Meta.Platforms, Licenses: licenses, Maintainers: maintainers, - Definition: makeRepoURL(i.source.Repo, subpath, line), + Definition: url, } } }() 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 } -- cgit 1.4.1