From fb07a24f45e9be0c1fa15fc388caf6fe3e97e75f Mon Sep 17 00:00:00 2001 From: John Bartholomew Date: Sun, 16 Mar 2025 16:10:31 +0000 Subject: [PATCH] feat: add an example bazel module + go binary using the library This is mostly so that I can add it as the test module to be used in the bazel registry presubmit --- .bazelignore | 1 + .gitignore | 6 +----- examples/bazel/.bazelrc | 1 + examples/bazel/.gitignore | 1 + examples/bazel/BUILD.bazel | 18 ++++++++++++++++++ examples/bazel/MODULE.bazel | 22 ++++++++++++++++++++++ examples/bazel/example.jsonnet | 8 ++++++++ examples/bazel/go.mod | 13 +++++++++++++ examples/bazel/go.sum | 12 ++++++++++++ examples/bazel/use_go_jsonnet.go | 19 +++++++++++++++++++ 10 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 examples/bazel/.bazelrc create mode 100644 examples/bazel/.gitignore create mode 100644 examples/bazel/BUILD.bazel create mode 100644 examples/bazel/MODULE.bazel create mode 100644 examples/bazel/example.jsonnet create mode 100644 examples/bazel/go.mod create mode 100644 examples/bazel/go.sum create mode 100644 examples/bazel/use_go_jsonnet.go diff --git a/.bazelignore b/.bazelignore index 3a90431..88a364c 100644 --- a/.bazelignore +++ b/.bazelignore @@ -1 +1,2 @@ cpp-jsonnet +examples/bazel diff --git a/.gitignore b/.gitignore index 1cbc83e..ee38818 100644 --- a/.gitignore +++ b/.gitignore @@ -8,11 +8,7 @@ coverage.out build/ dist/ gojsonnet.egg-info/ -/bazel-bin -/bazel-genfiles -/bazel-go-jsonnet -/bazel-out -/bazel-testlogs +bazel-* /dumpstdlibast # built binaries diff --git a/examples/bazel/.bazelrc b/examples/bazel/.bazelrc new file mode 100644 index 0000000..011eb53 --- /dev/null +++ b/examples/bazel/.bazelrc @@ -0,0 +1 @@ +common --lockfile_mode=off diff --git a/examples/bazel/.gitignore b/examples/bazel/.gitignore new file mode 100644 index 0000000..648fc0e --- /dev/null +++ b/examples/bazel/.gitignore @@ -0,0 +1 @@ +MODULE.bazel.lock diff --git a/examples/bazel/BUILD.bazel b/examples/bazel/BUILD.bazel new file mode 100644 index 0000000..1d04fe3 --- /dev/null +++ b/examples/bazel/BUILD.bazel @@ -0,0 +1,18 @@ +load("@gazelle//:def.bzl", "gazelle") +load("@rules_go//go:def.bzl", "go_binary", "go_library") + +gazelle(name = "gazelle") + +go_library( + name = "use_go_jsonnet_lib", + srcs = ["use_go_jsonnet.go"], + importpath = "github.com/google/go-jsonnet/examples/bazel", + visibility = ["//visibility:private"], + deps = ["@com_github_google_go_jsonnet//:go_default_library"], +) + +go_binary( + name = "use_go_jsonnet", + embed = [":use_go_jsonnet_lib"], + visibility = ["//visibility:public"], +) diff --git a/examples/bazel/MODULE.bazel b/examples/bazel/MODULE.bazel new file mode 100644 index 0000000..08de967 --- /dev/null +++ b/examples/bazel/MODULE.bazel @@ -0,0 +1,22 @@ +bazel_dep(name = "gazelle", version = "0.42.0") +bazel_dep(name = "rules_go", version = "0.53.0") +bazel_dep(name = "jsonnet_go") +local_path_override( + module_name = "jsonnet_go", + path = "../..", +) + +go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk") +go_sdk.download(version = "1.23.7") + +go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") +go_deps.from_file(go_mod = "//:go.mod") +use_repo( + go_deps, + "com_github_google_go_jsonnet", +) + +override_repo( + go_deps, + com_github_google_go_jsonnet = "jsonnet_go", +) diff --git a/examples/bazel/example.jsonnet b/examples/bazel/example.jsonnet new file mode 100644 index 0000000..8c7488d --- /dev/null +++ b/examples/bazel/example.jsonnet @@ -0,0 +1,8 @@ +local Person(name='Alice') = { + name: name, + welcome: 'Hello ' + name + '!', +}; +{ + person1: Person(), + person2: Person('Bob'), +} diff --git a/examples/bazel/go.mod b/examples/bazel/go.mod new file mode 100644 index 0000000..8c90eea --- /dev/null +++ b/examples/bazel/go.mod @@ -0,0 +1,13 @@ +module example/go-jsonnet-using-bazel + +go 1.23.7 + +require github.com/google/go-jsonnet v0.21.0-rc2 + +require ( + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/sys v0.31.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace github.com/google/go-jsonnet => ../../ diff --git a/examples/bazel/go.sum b/examples/bazel/go.sum new file mode 100644 index 0000000..a16161e --- /dev/null +++ b/examples/bazel/go.sum @@ -0,0 +1,12 @@ +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/examples/bazel/use_go_jsonnet.go b/examples/bazel/use_go_jsonnet.go new file mode 100644 index 0000000..2477a2f --- /dev/null +++ b/examples/bazel/use_go_jsonnet.go @@ -0,0 +1,19 @@ +package main + +import ( + "fmt" + + gjs "github.com/google/go-jsonnet" +) + +func main() { + fmt.Printf("Example using go jsonnet (%s)\n", gjs.Version()) + + vm := gjs.MakeVM() + out, err := vm.EvaluateFile("example.jsonnet") + if err != nil { + fmt.Printf("%v\n", err) + } else { + fmt.Printf("%s", out) + } +}