From e70431d68dced8754e94228753359b2130fd075a Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 20 May 2024 23:14:40 +0200 Subject: refactor: make declaration/definition URLs from Source.Repo --- internal/importer/options.go | 2 +- internal/importer/package.go | 3 +-- internal/importer/utils.go | 22 ++++++---------------- 3 files changed, 8 insertions(+), 19 deletions(-) diff --git a/internal/importer/options.go b/internal/importer/options.go index 8ce684c..4089f62 100644 --- a/internal/importer/options.go +++ b/internal/importer/options.go @@ -124,7 +124,7 @@ func (i *OptionIngester) Process(parent context.Context) (<-chan nix.Importable, switch decl := reflect.ValueOf(decl); decl.Kind() { case reflect.String: s := decl.String() - link, err := MakeChannelLink(i.source.Channel, i.source.Repo.Revision, s) + link, err := MakeChannelLink(i.source.Repo, s) if err != nil { errs <- errors.WithMessagef(err, "could not make a channel link for channel %s, revision %s and subpath %s", diff --git a/internal/importer/package.go b/internal/importer/package.go index dbc5854..5e9ad26 100644 --- a/internal/importer/package.go +++ b/internal/importer/package.go @@ -115,7 +115,6 @@ func (i *PackageIngester) Process(parent context.Context) (<-chan nix.Importable defer close(errs) defer cancel() - userRepo := i.source.Repo.Owner + "/" + i.source.Repo.Repo outer: for mv := range i.dec.Stream() { var err error @@ -240,7 +239,7 @@ func (i *PackageIngester) Process(parent context.Context) (<-chan nix.Importable Platforms: i.pkg.Meta.Platforms, Licenses: licenses, Maintainers: maintainers, - Definition: makeGitHubFileURL(userRepo, "", subpath, line), + Definition: makeRepoURL(i.source.Repo, subpath, line), } } }() diff --git a/internal/importer/utils.go b/internal/importer/utils.go index 1c0d3af..3977c2e 100644 --- a/internal/importer/utils.go +++ b/internal/importer/utils.go @@ -36,11 +36,12 @@ func ValueTypeToString(valueType jstream.ValueType) string { return "very strange" } -func makeGitHubFileURL(userRepo string, ref string, subPath string, line string) string { +func makeRepoURL(repo config.Repository, subPath string, line string) string { + ref := repo.Revision if ref == "" { ref = "master" } - url, _ := url.JoinPath("https://github.com/", userRepo, "blob", ref, subPath) + url, _ := url.JoinPath("https://github.com/", repo.Owner, repo.Repo, "blob", ref, subPath) if line != "" { url = url + "#L" + line } @@ -48,21 +49,10 @@ func makeGitHubFileURL(userRepo string, ref string, subPath string, line string) return url } -// make configurable? -var channelRepoMap = map[string]string{ - "nixpkgs": "NixOS/nixpkgs", - "nix-darwin": "LnL7/nix-darwin", - "home-manager": "nix-community/home-manager", -} - -func MakeChannelLink(channel string, ref string, subPath string) (*nix.Link, error) { - if channelRepoMap[channel] == "" { - return nil, fmt.Errorf("don't know what repository relates to channel <%s>", channel) - } - +func MakeChannelLink(repo config.Repository, subPath string) (*nix.Link, error) { return &nix.Link{ - Name: fmt.Sprintf("<%s/%s>", channel, subPath), - URL: makeGitHubFileURL(channelRepoMap[channel], ref, subPath, ""), + Name: fmt.Sprintf("<%s/%s>", repo.Repo, subPath), + URL: makeRepoURL(repo, subPath, ""), }, nil } -- cgit 1.4.1