From abf9c050906b391e02c0230fdfce01306fa7e707 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 9 Oct 2023 14:03:29 +0200 Subject: feat(tvix/castore): add RenamedNode helper This takes a castorev1pb.Node and updates its name, making sure to copy it. Change-Id: I57bf2b2b4a74496a1a697bcbce72bf67a12e69fe Reviewed-on: https://cl.tvl.fyi/c/depot/+/9594 Autosubmit: flokli Tested-by: BuildkiteCI Reviewed-by: Brian McGee --- tvix/castore/protos/rename_node.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tvix/castore/protos/rename_node.go (limited to 'tvix/castore') diff --git a/tvix/castore/protos/rename_node.go b/tvix/castore/protos/rename_node.go new file mode 100644 index 000000000000..80537b16d38d --- /dev/null +++ b/tvix/castore/protos/rename_node.go @@ -0,0 +1,38 @@ +package castorev1 + +// RenamedNode returns a node with a new name. +func RenamedNode(node *Node, name string) *Node { + if directoryNode := node.GetDirectory(); directoryNode != nil { + return &Node{ + Node: &Node_Directory{ + Directory: &DirectoryNode{ + Name: []byte(name), + Digest: directoryNode.GetDigest(), + Size: directoryNode.GetSize(), + }, + }, + } + } else if fileNode := node.GetFile(); fileNode != nil { + return &Node{ + Node: &Node_File{ + File: &FileNode{ + Name: []byte(name), + Digest: fileNode.GetDigest(), + Size: fileNode.GetSize(), + Executable: fileNode.GetExecutable(), + }, + }, + } + } else if symlinkNode := node.GetSymlink(); symlinkNode != nil { + return &Node{ + Node: &Node_Symlink{ + Symlink: &SymlinkNode{ + Name: []byte(name), + Target: symlinkNode.GetTarget(), + }, + }, + } + } else { + panic("unreachable") + } +} -- cgit 1.4.1