diff options
Diffstat (limited to 'tvix/store-go/pathinfo.go')
-rw-r--r-- | tvix/store-go/pathinfo.go | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/tvix/store-go/pathinfo.go b/tvix/store-go/pathinfo.go index 8c0b94f200c1..d0384c4fe25c 100644 --- a/tvix/store-go/pathinfo.go +++ b/tvix/store-go/pathinfo.go @@ -49,6 +49,20 @@ func (p *PathInfo) Validate() (*storepath.StorePath, error) { ) } } + + // If the Deriver field is populated, ensure it parses to a StorePath. + // We can't check for it to *not* end with .drv, as the .drv files produced by + // recursive Nix end with multiple .drv suffixes, and only one is popped when + // converting to this field. + if deriver := narInfo.GetDeriver(); deriver != nil { + deriverStorePath := storepath.StorePath{ + Name: string(deriver.GetName()), + Digest: deriver.GetDigest(), + } + if err := deriverStorePath.Validate(); err != nil { + return nil, fmt.Errorf("invalid deriver field: %w", err) + } + } } // ensure there is a (root) node present @@ -81,19 +95,5 @@ func (p *PathInfo) Validate() (*storepath.StorePath, error) { return nil, fmt.Errorf("unable to parse root node name %s as StorePath: %w", rootNodeName, err) } - // If the Deriver field is populated, ensure it parses to a StorePath. - // We can't check for it to *not* end with .drv, as the .drv files produced by - // recursive Nix end with multiple .drv suffixes, and only one is popped when - // converting to this field. - if p.Deriver != nil { - deriverStorePath := storepath.StorePath{ - Name: string(p.Deriver.GetName()), - Digest: p.Deriver.GetDigest(), - } - if err := deriverStorePath.Validate(); err != nil { - return nil, fmt.Errorf("invalid deriver field: %w", err) - } - } - return storePath, nil } |