about summary refs log tree commit diff stats
path: root/internal/fetcher/nixpkgs-channel.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/fetcher/nixpkgs-channel.go')
-rw-r--r--internal/fetcher/nixpkgs-channel.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/fetcher/nixpkgs-channel.go b/internal/fetcher/nixpkgs-channel.go
index 32aaac3..033b577 100644
--- a/internal/fetcher/nixpkgs-channel.go
+++ b/internal/fetcher/nixpkgs-channel.go
@@ -2,6 +2,7 @@ package fetcher
 
 import (
 	"context"
+	"fmt"
 	"log/slog"
 	"net/url"
 	"path"
@@ -23,6 +24,23 @@ func makeChannelURL(channel string, subPath string) (string, error) {
 	return url, errors.WithMessagef(err, "error creating URL")
 }
 
+func NewNixpkgsChannelFetcher(
+	source *config.Source,
+	dataPath string,
+	logger *slog.Logger,
+) (*NixpkgsChannelFetcher, error) {
+	switch source.Importer {
+	case config.Options, config.Packages:
+		return &NixpkgsChannelFetcher{
+			DataPath: dataPath,
+			Source:   source,
+			Logger:   logger,
+		}, nil
+	default:
+		return nil, fmt.Errorf("unsupported importer type %s", source.Importer)
+	}
+}
+
 const (
 	revisionFilename = "git-revision"
 	optionsFilename  = "options.json.br"