Skip to content

Is it possible to interpolate nested object? #983

Open
@pombadev

Description

@pombadev

My jsonnet file looks like this.

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:

...
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"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions