diff options
author | Florian Klink <flokli@flokli.de> | 2023-10-09T15·23+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-10-09T22·05+0000 |
commit | 28cd4b1a2f98759dc33390db78f328f20f2db515 (patch) | |
tree | 880ac973a14c38cb0385330e0c5085f063af096e /tvix/nar-bridge/pkg/http/narinfo_get.go | |
parent | 92481825b36f914bc99cbb15d560865d808b2306 (diff) |
feat(tvix/nar-bridge): add ToNixNarInfo() r/6758
Convenience function, moves all code converting from a PathInfo struct to to go-nix's NarInfo. Change-Id: Idf0dcc38675674563f2dfd3286a4a55fa2a24a82 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9593 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: Brian McGee <brian@bmcgee.ie>
Diffstat (limited to 'tvix/nar-bridge/pkg/http/narinfo_get.go')
-rw-r--r-- | tvix/nar-bridge/pkg/http/narinfo_get.go | 38 |
1 files changed, 3 insertions, 35 deletions
diff --git a/tvix/nar-bridge/pkg/http/narinfo_get.go b/tvix/nar-bridge/pkg/http/narinfo_get.go index 93192c03e52e..8338d43676f5 100644 --- a/tvix/nar-bridge/pkg/http/narinfo_get.go +++ b/tvix/nar-bridge/pkg/http/narinfo_get.go @@ -8,18 +8,13 @@ import ( "io" "io/fs" "net/http" - "path" "strings" "sync" - castorev1pb "code.tvl.fyi/tvix/castore/protos" storev1pb "code.tvl.fyi/tvix/store/protos" "github.com/go-chi/chi/v5" nixhash "github.com/nix-community/go-nix/pkg/hash" - "github.com/nix-community/go-nix/pkg/narinfo" - "github.com/nix-community/go-nix/pkg/narinfo/signature" "github.com/nix-community/go-nix/pkg/nixbase32" - "github.com/nix-community/go-nix/pkg/storepath" log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -71,37 +66,10 @@ func renderNarinfo( return nil } - // convert the signatures from storev1pb signatures to narinfo signatures - narinfoSignatures := make([]signature.Signature, 0) - for _, pathInfoSignature := range pathInfo.Narinfo.Signatures { - narinfoSignatures = append(narinfoSignatures, signature.Signature{ - Name: pathInfoSignature.GetName(), - Data: pathInfoSignature.GetData(), - }) - } - - // extract the name of the node in the pathInfo structure, which will become the output path - var nodeName []byte - switch v := (pathInfo.GetNode().GetNode()).(type) { - case *castorev1pb.Node_File: - nodeName = v.File.GetName() - case *castorev1pb.Node_Symlink: - nodeName = v.Symlink.GetName() - case *castorev1pb.Node_Directory: - nodeName = v.Directory.GetName() - } - - narInfo := narinfo.NarInfo{ - StorePath: path.Join(storepath.StoreDir, string(nodeName)), - URL: "nar/" + nixbase32.EncodeToString(narHash.Digest()) + ".nar", - Compression: "none", // TODO: implement zstd compression - NarHash: narHash, - NarSize: uint64(pathInfo.Narinfo.NarSize), - References: pathInfo.Narinfo.GetReferenceNames(), - Signatures: narinfoSignatures, - } + // convert the PathInfo to NARInfo. + narInfo, err := ToNixNarInfo(pathInfo) - // render .narinfo from pathInfo + // Write it out to the client. _, err = io.Copy(w, strings.NewReader(narInfo.String())) if err != nil { return fmt.Errorf("unable to write narinfo to client: %w", err) |