about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--internal/importer/ingest.go50
-rw-r--r--internal/importer/utils.go60
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
+}