Skip to content

Commit

Permalink
tiltfile: add shlex.quote (#3720)
Browse files Browse the repository at this point in the history
  • Loading branch information
landism committed Aug 26, 2020
1 parent 988dd56 commit 79e500a
Show file tree
Hide file tree
Showing 13 changed files with 213 additions and 0 deletions.
1 change: 1 addition & 0 deletions go.mod
Expand Up @@ -5,6 +5,7 @@ go 1.14
require (
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d // indirect
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 // indirect
github.com/alessio/shellescape v1.2.2
github.com/bitly/go-hostpool v0.1.0 // indirect
github.com/bitly/go-simplejson v0.5.0 // indirect
github.com/blang/semver v3.5.1+incompatible
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Expand Up @@ -51,6 +51,8 @@ github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0
github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alessio/shellescape v1.2.2 h1:8LnL+ncxhWT2TR00dfJRT25JWWrhkMZXneHVWnetDZg=
github.com/alessio/shellescape v1.2.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
github.com/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/benbjohnson/clock v1.0.0/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
Expand Down
30 changes: 30 additions & 0 deletions internal/tiltfile/shlex/shlex.go
@@ -0,0 +1,30 @@
package shlex

import (
"go.starlark.net/starlark"

"github.com/tilt-dev/tilt/internal/tiltfile/starkit"

"github.com/alessio/shellescape"
)

type Extension struct{}

func NewExtension() Extension {
return Extension{}
}

func (Extension) OnStart(env *starkit.Environment) error {
return env.AddBuiltin("shlex.quote", quote)
}

func quote(thread *starlark.Thread, fn *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var s string
err := starkit.UnpackArgs(thread, fn.Name(), args, kwargs,
"name", &s)
if err != nil {
return nil, err
}

return starlark.String(shellescape.Quote(s)), nil
}
25 changes: 25 additions & 0 deletions internal/tiltfile/shlex/shlex_test.go
@@ -0,0 +1,25 @@
package shlex

import (
"testing"

"github.com/stretchr/testify/require"

"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
)

func TestQuote(t *testing.T) {
f := starkit.NewFixture(t, NewExtension())

f.File("Tiltfile", `
s = shlex.quote("foo '$FOO'")
print(shlex.quote("foo '$FOO'"))
`)

_, err := f.ExecFile("Tiltfile")
require.NoError(t, err)

require.Equal(t, `'foo '"'"'$FOO'"'"''
`, f.PrintOutput())
}
2 changes: 2 additions & 0 deletions internal/tiltfile/tiltfile_state.go
Expand Up @@ -29,6 +29,7 @@ import (
"github.com/tilt-dev/tilt/internal/tiltfile/k8scontext"
"github.com/tilt-dev/tilt/internal/tiltfile/os"
"github.com/tilt-dev/tilt/internal/tiltfile/secretsettings"
"github.com/tilt-dev/tilt/internal/tiltfile/shlex"
"github.com/tilt-dev/tilt/internal/tiltfile/starkit"
"github.com/tilt-dev/tilt/internal/tiltfile/starlarkstruct"
"github.com/tilt-dev/tilt/internal/tiltfile/telemetry"
Expand Down Expand Up @@ -200,6 +201,7 @@ func (s *tiltfileState) loadManifests(absFilename string, userConfigState model.
updatesettings.NewExtension(),
secretsettings.NewExtension(),
encoding.NewExtension(),
shlex.NewExtension(),
tiltextension.NewExtension(tiltextension.NewGithubFetcher(), tiltextension.NewLocalStore(filepath.Dir(absFilename))),
)
if err != nil {
Expand Down
24 changes: 24 additions & 0 deletions vendor/github.com/alessio/shellescape/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions vendor/github.com/alessio/shellescape/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions vendor/github.com/alessio/shellescape/AUTHORS

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions vendor/github.com/alessio/shellescape/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 58 additions & 0 deletions vendor/github.com/alessio/shellescape/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions vendor/github.com/alessio/shellescape/go.mod

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 39 additions & 0 deletions vendor/github.com/alessio/shellescape/shellescape.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions vendor/modules.txt
Expand Up @@ -52,6 +52,9 @@ github.com/PuerkitoBio/urlesc
## explicit
github.com/agl/ed25519
github.com/agl/ed25519/edwards25519
# github.com/alessio/shellescape v1.2.2
## explicit
github.com/alessio/shellescape
# github.com/apache/thrift v0.0.0-20171203172758-327ebb6c2b6d
## explicit
# github.com/beorn7/perks v1.0.1
Expand Down

0 comments on commit 79e500a

Please sign in to comment.