diff options
author | Florian Klink <flokli@flokli.de> | 2023-10-09T12·03+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-10-09T22·05+0000 |
commit | abf9c050906b391e02c0230fdfce01306fa7e707 (patch) | |
tree | e9d74fb687a660d860083fdf3de37750b3121d65 /tvix/castore/protos | |
parent | 78abeaa92074f934e14845fbb95fb8218c72ee9f (diff) |
feat(tvix/castore): add RenamedNode helper r/6760
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 <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: Brian McGee <brian@bmcgee.ie>
Diffstat (limited to 'tvix/castore/protos')
-rw-r--r-- | tvix/castore/protos/rename_node.go | 38 |
1 files changed, 38 insertions, 0 deletions
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") + } +} |