diff options
-rw-r--r-- | internal/importer/ingest.go | 50 | ||||
-rw-r--r-- | internal/importer/utils.go | 60 |
2 files changed, 60 insertions, 50 deletions
diff --git a/internal/importer/ingest.go b/internal/importer/ingest.go index f78722a..349b0ac 100644 --- a/internal/importer/ingest.go +++ b/internal/importer/ingest.go @@ -2,9 +2,7 @@ package importer import ( "context" - "fmt" "log/slog" - "net/url" "os" "reflect" "searchix/internal/config" @@ -36,54 +34,6 @@ type nixOptionJSON struct { Type string } -func ValueTypeToString(valueType jstream.ValueType) string { - switch valueType { - case jstream.Unknown: - return "unknown" - case jstream.Null: - return "null" - case jstream.String: - return "string" - case jstream.Number: - return "number" - case jstream.Boolean: - return "boolean" - case jstream.Array: - return "array" - case jstream.Object: - return "object" - } - - return "very strange" -} - -func makeGitHubFileURL(userRepo string, ref string, subPath string) string { - if ref == "" { - ref = "master" - } - url, _ := url.JoinPath("https://github.com/", userRepo, "blob", ref, subPath) - - 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) (*options.Link, error) { - if channelRepoMap[channel] == "" { - return nil, fmt.Errorf("don't know what repository relates to channel <%s>", channel) - } - - return &options.Link{ - Name: fmt.Sprintf("<%s/%s>", channel, subPath), - URL: makeGitHubFileURL(channelRepoMap[channel], ref, subPath), - }, nil -} - func convertNixValue(nj *nixValueJSON) *options.NixValue { if nj == nil { return nil diff --git a/internal/importer/utils.go b/internal/importer/utils.go new file mode 100644 index 0000000..f7ba36a --- /dev/null +++ b/internal/importer/utils.go @@ -0,0 +1,60 @@ +package importer + +import ( + "fmt" + "net/url" + "searchix/internal/options" + + "github.com/bcicen/jstream" +) + +func ValueTypeToString(valueType jstream.ValueType) string { + switch valueType { + case jstream.Unknown: + return "unknown" + case jstream.Null: + return "null" + case jstream.String: + return "string" + case jstream.Number: + return "number" + case jstream.Boolean: + return "boolean" + case jstream.Array: + return "array" + case jstream.Object: + return "object" + } + + return "very strange" +} + +func makeGitHubFileURL(userRepo string, ref string, subPath string, line string) string { + if ref == "" { + ref = "master" + } + url, _ := url.JoinPath("https://github.com/", userRepo, "blob", ref, subPath) + if line != "" { + url = url + "#L" + line + } + + 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) (*options.Link, error) { + if channelRepoMap[channel] == "" { + return nil, fmt.Errorf("don't know what repository relates to channel <%s>", channel) + } + + return &options.Link{ + Name: fmt.Sprintf("<%s/%s>", channel, subPath), + URL: makeGitHubFileURL(channelRepoMap[channel], ref, subPath, ""), + }, nil +} |