Skip to content

Commit

Permalink
Merge pull request #163 from sh0rez/jsonnet-extvar
Browse files Browse the repository at this point in the history
feat(jsonnet): support setting extVars
  • Loading branch information
bradrydzewski authored Nov 23, 2019
2 parents 0b1b264 + 02714e3 commit 1fad337
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions drone/jsonnet/jsonnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ package jsonnet

import (
"bytes"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"strings"

"github.com/drone/drone-yaml/yaml"
"github.com/drone/drone-yaml/yaml/pretty"
Expand Down Expand Up @@ -51,6 +53,10 @@ var Command = cli.Command{
Name: "string",
Usage: "Expect a string, manifest as plain text",
},
cli.StringSliceFlag{
Name: "extVar, V",
Usage: "Pass extVars to Jsonnet (can be specified multiple times)",
},
},
}

Expand All @@ -74,6 +80,16 @@ func generate(c *cli.Context) error {
// register native functions
RegisterNativeFuncs(vm)

// extVars
vars := c.StringSlice("extVar")
for _, v := range vars {
name, value, err := getVarVal(v)
if err != nil {
return err
}
vm.ExtVar(name, value)
}

buf := new(bytes.Buffer)
if c.Bool("stream") {
docs, err := vm.EvaluateSnippetStream(source, string(data))
Expand Down Expand Up @@ -114,3 +130,17 @@ func generate(c *cli.Context) error {

return ioutil.WriteFile(target, buf.Bytes(), 0644)
}

// https://github.com/google/go-jsonnet/blob/master/cmd/jsonnet/cmd.go#L149
func getVarVal(s string) (string, string, error) {
parts := strings.SplitN(s, "=", 2)
name := parts[0]
if len(parts) == 1 {
content, exists := os.LookupEnv(name)
if exists {
return name, content, nil
}
return "", "", fmt.Errorf("environment variable %v was undefined", name)
}
return name, parts[1], nil
}

0 comments on commit 1fad337

Please sign in to comment.