diff --git a/.gitignore b/.gitignore index 226ee08..cf2d3a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,14 @@ *~ -coverage.out -.*.swp -/tests_path.source -/linter/jsonnet-lint/jsonnet-lint -/jsonnet -/dumpstdlibast -*.so *.prof +*.so +.*.swp +coverage.out +/bazel-bin +/bazel-genfiles +/bazel-go-jsonnet +/bazel-out +/bazel-testlogs +/dumpstdlibast +/jsonnet +/linter/jsonnet-lint/jsonnet-lint +/tests_path.source diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 0000000..2d1493b --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,52 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") +load( + "@bazel_gazelle//:def.bzl", + "gazelle", +) + +# gazelle:prefix github.com/google/go-jsonnet +gazelle( + name = "gazelle", +) + +go_library( + name = "go_default_library", + srcs = [ + "builtins.go", + "desugarer.go", + "doc.go", + "error_formatter.go", + "imports.go", + "interpreter.go", + "runtime_error.go", + "static_analyzer.go", + "thunks.go", + "value.go", + "vm.go", + ], + importpath = "github.com/google/go-jsonnet", + visibility = ["//visibility:public"], + deps = [ + "//ast:go_default_library", + "//parser:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = [ + "desugarer_test.go", + "interpreter_test.go", + "jsonnet_test.go", + "main_test.go", + "static_analyzer_test.go", + ], + data = glob(["testdata/**"]), + embed = [":go_default_library"], + deps = [ + "//ast:go_default_library", + "//astgen:go_default_library", + "//parser:go_default_library", + "@com_github_sergi_go_diff//diffmatchpatch:go_default_library", + ], +) diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..4c616f3 --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,87 @@ +workspace(name = "google_jsonnet_go") + +load( + "@bazel_tools//tools/build_defs/repo:http.bzl", + "http_archive", +) + +# Go and Gazelle +http_archive( + name = "io_bazel_rules_go", + sha256 = "a82a352bffae6bee4e95f68a8d80a70e87f42c4741e6a448bec11998fcc82329", + urls = ["https://github.com/bazelbuild/rules_go/releases/download/0.18.5/rules_go-0.18.5.tar.gz"], +) + +http_archive( + name = "bazel_gazelle", + sha256 = "3c681998538231a2d24d0c07ed5a7658cb72bfb5fd4bf9911157c0e9ac6a2687", + urls = ["https://github.com/bazelbuild/bazel-gazelle/releases/download/0.17.0/bazel-gazelle-0.17.0.tar.gz"], +) + +load( + "@io_bazel_rules_go//go:deps.bzl", + "go_register_toolchains", + "go_rules_dependencies", +) + +go_rules_dependencies() + +go_register_toolchains() + +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") + +gazelle_dependencies() + +go_repository( + name = "com_github_davecgh_go_spew", + importpath = "github.com/davecgh/go-spew", + tag = "v1.1.0", +) + +go_repository( + name = "com_github_fatih_color", + importpath = "github.com/fatih/color", + tag = "v1.7.0", +) + +go_repository( + name = "com_github_mattn_go_colorable", + importpath = "github.com/mattn/go-colorable", + tag = "v0.1.1", +) + +go_repository( + name = "com_github_mattn_go_isatty", + importpath = "github.com/mattn/go-isatty", + tag = "v0.0.7", +) + +go_repository( + name = "com_github_pmezard_go_difflib", + importpath = "github.com/pmezard/go-difflib", + tag = "v1.0.0", +) + +go_repository( + name = "com_github_sergi_go_diff", + importpath = "github.com/sergi/go-diff", + tag = "v1.0.0", +) + +go_repository( + name = "com_github_stretchr_objx", + importpath = "github.com/stretchr/objx", + tag = "v0.1.0", +) + +go_repository( + name = "com_github_stretchr_testify", + importpath = "github.com/stretchr/testify", + tag = "v1.3.0", +) + +go_repository( + name = "org_golang_x_sys", + commit = "a9d3bda3a223", + importpath = "golang.org/x/sys", +) diff --git a/ast/BUILD.bazel b/ast/BUILD.bazel new file mode 100644 index 0000000..ea9d9fa --- /dev/null +++ b/ast/BUILD.bazel @@ -0,0 +1,16 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "ast.go", + "clone.go", + "fodder.go", + "identifier_set.go", + "location.go", + "stdast.go", + "util.go", + ], + importpath = "github.com/google/go-jsonnet/ast", + visibility = ["//visibility:public"], +) diff --git a/c-bindings/BUILD.bazel b/c-bindings/BUILD.bazel new file mode 100644 index 0000000..3877e48 --- /dev/null +++ b/c-bindings/BUILD.bazel @@ -0,0 +1,23 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "c-bindings.go", + "internal.h", + "json.cpp", + "json.h", + "libjsonnet.cpp", + ], + cgo = True, + copts = ["-std=c++11 -Wall"], + importpath = "github.com/google/go-jsonnet/c-bindings", + visibility = ["//visibility:private"], + deps = ["//:go_default_library"], +) + +go_binary( + name = "c-bindings", + embed = [":go_default_library"], + visibility = ["//visibility:public"], +) diff --git a/cmd/dumpstdlibast/BUILD.bazel b/cmd/dumpstdlibast/BUILD.bazel new file mode 100644 index 0000000..e727f85 --- /dev/null +++ b/cmd/dumpstdlibast/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go_default_library", + srcs = ["dumpstdlibast.go"], + importpath = "github.com/google/go-jsonnet/cmd/dumpstdlibast", + visibility = ["//visibility:private"], + deps = [ + "//:go_default_library", + "//dump:go_default_library", + ], +) + +go_binary( + name = "dumpstdlibast", + embed = [":go_default_library"], + visibility = ["//visibility:public"], +) diff --git a/cmd/jsonnet/BUILD.bazel b/cmd/jsonnet/BUILD.bazel new file mode 100644 index 0000000..e387ca4 --- /dev/null +++ b/cmd/jsonnet/BUILD.bazel @@ -0,0 +1,24 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = ["cmd.go"], + importpath = "github.com/google/go-jsonnet/cmd/jsonnet", + visibility = ["//visibility:private"], + deps = [ + "//:go_default_library", + "@com_github_fatih_color//:go_default_library", + ], +) + +go_binary( + name = "jsonnet", + embed = [":go_default_library"], + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = ["cmd_test.go"], + embed = [":go_default_library"], +) diff --git a/dump/BUILD.bazel b/dump/BUILD.bazel new file mode 100644 index 0000000..7c0bd9d --- /dev/null +++ b/dump/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "dump.go", + "pointermap.go", + "utils.go", + ], + importpath = "github.com/google/go-jsonnet/dump", + visibility = ["//visibility:public"], +) + +go_test( + name = "go_default_test", + srcs = ["dump_test.go"], + embed = [":go_default_library"], +) diff --git a/linter/BUILD.bazel b/linter/BUILD.bazel new file mode 100644 index 0000000..ee082b8 --- /dev/null +++ b/linter/BUILD.bazel @@ -0,0 +1,15 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "find_variables.go", + "linter.go", + ], + importpath = "github.com/google/go-jsonnet/linter", + visibility = ["//visibility:public"], + deps = [ + "//ast:go_default_library", + "//parser:go_default_library", + ], +) diff --git a/linter/jsonnet-lint/BUILD.bazel b/linter/jsonnet-lint/BUILD.bazel new file mode 100644 index 0000000..468aaf6 --- /dev/null +++ b/linter/jsonnet-lint/BUILD.bazel @@ -0,0 +1,18 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") + +go_library( + name = "go_default_library", + srcs = ["cmd.go"], + importpath = "github.com/google/go-jsonnet/linter/jsonnet-lint", + visibility = ["//visibility:private"], + deps = [ + "//:go_default_library", + "//linter:go_default_library", + ], +) + +go_binary( + name = "jsonnet-lint", + embed = [":go_default_library"], + visibility = ["//visibility:public"], +) diff --git a/parser/BUILD.bazel b/parser/BUILD.bazel new file mode 100644 index 0000000..247c158 --- /dev/null +++ b/parser/BUILD.bazel @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "context.go", + "lexer.go", + "literalfield_set.go", + "parser.go", + "static_error.go", + ], + importpath = "github.com/google/go-jsonnet/parser", + visibility = ["//visibility:public"], + deps = ["//ast:go_default_library"], +) + +go_test( + name = "go_default_test", + srcs = [ + "lexer_test.go", + "parser_test.go", + ], + embed = [":go_default_library"], + deps = ["//ast:go_default_library"], +)