google / google/jsonnet

Is it possible to interpolate nested object?

Open
#983 4 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
Jsonnet
Stars
7.6k
Forks
475
PR merge metrics
No merged PRs in 30d

Description

My `jsonnet` file looks like this.

```jsonnet
local constants = {
sys: {
os: 'linux',
arch: ['amd64', 'x86_64'],
},
};

{
prefix: '~/.local',
packages: [
{
local version = '1.18',

name: 'golang',
version: version,
file: 'go%(version)s.%(sys.os)s-%(sys.arch[0])s.tar.gz' % { version: version } + constants,
description: 'The Go programming language.',
url: 'https://dl.google.com/go/' + self.file,
prebuild: "curl -LO '%(url)s'" % self,

build: |||
rm -rf %(prefix)s/go
tar -C %(prefix)s -xzf %(file)s
||| % { prefix: $.prefix, url: $.packages[0].file },
},
],
}

```

I'm trying to access nested field but get an error:

```jsonnet
...
file: 'go%(version)s.%(sys.os)s-%(sys.arch[0])s.tar.gz' % { version: version } + constants,
...
```
Error:
```
RUNTIME ERROR: No such field: sys.os
```

Expected:
```
file: "go1.18.linux-amd64.tar.gz"
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.