about summary refs log tree commit diff stats
path: root/internal/importer/channel.go
diff options
context:
space:
mode:
authorAlan Pearce2024-05-16 23:41:57 +0200
committerAlan Pearce2024-05-16 23:41:57 +0200
commita5e758d41c151c17ed03b39454470ba8dd0c3b99 (patch)
tree386333b5020477eabcf490773113b029e47a21ef /internal/importer/channel.go
parentd558039919b6198a246a6a3fd007276191cb4b2f (diff)
downloadsearchix-a5e758d41c151c17ed03b39454470ba8dd0c3b99.tar.lz
searchix-a5e758d41c151c17ed03b39454470ba8dd0c3b99.tar.zst
searchix-a5e758d41c151c17ed03b39454470ba8dd0c3b99.zip
refactor: separate fetch and import logic
Diffstat (limited to 'internal/importer/channel.go')
-rw-r--r--internal/importer/channel.go97
1 files changed, 0 insertions, 97 deletions
diff --git a/internal/importer/channel.go b/internal/importer/channel.go
deleted file mode 100644
index 1bce1b0..0000000
--- a/internal/importer/channel.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package importer
-
-import (
-	"context"
-	"fmt"
-	"log/slog"
-	"os"
-	"os/exec"
-	"path"
-	"searchix/internal/config"
-	"searchix/internal/file"
-	"searchix/internal/index"
-	"strconv"
-	"strings"
-
-	"github.com/pkg/errors"
-)
-
-type ChannelImporter struct {
-	DataPath   string
-	Source     *config.Source
-	SourceFile string
-	Logger     *slog.Logger
-}
-
-func (i *ChannelImporter) FetchIfNeeded(parent context.Context) (bool, error) {
-	ctx, cancel := context.WithTimeout(parent, i.Source.FetchTimeout)
-	defer cancel()
-
-	dest := i.DataPath
-
-	before, err := os.Readlink(dest)
-	if file.NeedNotExist(err) != nil {
-		return false, errors.WithMessagef(err, "could not call readlink on file %s", dest)
-	}
-	i.Logger.Debug("stat before", "name", before)
-
-	args := []string{
-		"--no-build-output",
-		"--timeout",
-		strconv.Itoa(int(i.Source.FetchTimeout.Seconds() - 1)),
-		fmt.Sprintf("<%s/%s>", i.Source.Channel, i.Source.ImportPath),
-		"--attr",
-		i.Source.Attribute,
-		"--out-link",
-		dest,
-	}
-
-	if i.Source.URL != "" {
-		args = append(args, "-I", fmt.Sprintf("%s=%s", i.Source.Channel, i.Source.URL))
-	}
-
-	i.Logger.Debug("nix-build command", "args", args)
-	cmd := exec.CommandContext(ctx, "nix-build", args...)
-	out, err := cmd.Output()
-	if err != nil {
-		return false, errors.WithMessage(err, "failed to run nix-build (--dry-run)")
-	}
-	i.Logger.Debug("nix-build", "output", strings.TrimSpace(string(out)))
-
-	outPath := path.Join(dest, i.Source.OutputPath)
-	i.Logger.Debug(
-		"checking output path",
-		"outputPath",
-		outPath,
-		"dest",
-		dest,
-		"source",
-		i.Source.OutputPath,
-	)
-	after, err := os.Readlink(dest)
-	if err := file.NeedNotExist(err); err != nil {
-		return false, errors.WithMessagef(
-			err,
-			"failed to stat output file from nix-build, filename: %s",
-			outPath,
-		)
-	}
-	i.Logger.Debug("stat after", "name", after)
-
-	return before != after, nil
-}
-
-func (i *ChannelImporter) Import(parent context.Context, indexer *index.WriteIndex) (bool, error) {
-	if i.Source.OutputPath == "" {
-		return false, errors.New("no output path specified")
-	}
-
-	filename := path.Join(i.DataPath, i.SourceFile, i.Source.OutputPath)
-	i.Logger.Debug("preparing import run", "revision", i.Source.Repo.Revision, "filename", filename)
-
-	return processOptions(parent, indexer, &importConfig{
-		Source:   i.Source,
-		Filename: filename,
-		Logger:   i.Logger,
-	})
-}