Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
common --enable_bzlmod
common --@aspect_rules_ts//ts:skipLibCheck=honor_tsconfig

build --test_output=errors --action_env="GTEST_COLOR=1"

Expand Down
79 changes: 36 additions & 43 deletions BUILD
Original file line number Diff line number Diff line change
@@ -1,68 +1,61 @@
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
load("@bazel_gazelle//:def.bzl", "gazelle")
load("@npm//:defs.bzl", "npm_link_all_packages")
load("@npm//:protobufjs-cli/package_json.bzl", "bin")
load("@npm//:tslint/package_json.bzl", tslint_bin = "bin")

package(default_visibility = ["//visibility:public"])

load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")
npm_link_all_packages(name = "node_modules")

copy_to_bin(
name = "tsconfig",
srcs = ["tsconfig.json"],
visibility = ["//visibility:public"],
)

copy_to_bin(
name = "tsconfig_esm",
srcs = ["tsconfig.esm.json"],
visibility = ["//visibility:public"],
)

copy_to_bin(
name = "package_json",
srcs = ["package.json"],
visibility = ["//visibility:public"],
)

exports_files([
"tsconfig.json",
"tsconfig.esm.json",
"package.json",
"readme.md",
"version.bzl",
])

PROTOBUF_DEPS = [
"@npm//protobufjs",
"@npm//protobufjs-cli",
# these deps are needed even though they are not automatic transitive deps of
# protobufjs since if they are not in the runfiles then protobufjs attempts to
# run `npm install` at runtime to get thhem which fails as it tries to access
# the npm cache outside of the sandbox
"@npm//semver",
"@npm//chalk",
"@npm//glob",
"@npm//jsdoc",
"@npm//minimist",
"@npm//tmp",
"@npm//uglify-js",
"@npm//uglify-es",
"@npm//espree",
"@npm//escodegen",
"@npm//estraverse",
]

nodejs_binary(
bin.pbjs_binary(
name = "pbjs",
data = PROTOBUF_DEPS,
entry_point = "@npm//:node_modules/protobufjs-cli/bin/pbjs",
chdir = ".",
visibility = ["//visibility:public"],
)

nodejs_binary(
bin.pbts_binary(
name = "pbts",
data = PROTOBUF_DEPS,
entry_point = "@npm//:node_modules/protobufjs-cli/bin/pbts",
chdir = ".",
visibility = ["//visibility:public"],
)

nodejs_binary(
tslint_bin.tslint_binary(
name = "tslint",
data = [
"@npm//tslint",
"//:node_modules/tslint-config-prettier",
"//:node_modules/tslint-config-security",
],
entry_point = "@npm//:node_modules/tslint/bin/tslint",
templated_args = ["--node_options=--preserve-symlinks"],
visibility = ["//visibility:public"],
)

load("@bazel_gazelle//:def.bzl", "gazelle")

# gazelle:prefix github.com/dataform-co/dataform
# gazelle:proto package
# gazelle:proto_group go_package
gazelle(name = "gazelle")

load("//tools:ts_library.bzl", "ts_library")

# TODO: This is only here in order to workaround a bug in the way bazel resolves
# workspace imports when in nested repositories, and can be removed once that is fixed.
ts_library(
name = "modules-fix",
srcs = [],
module_name = "df",
)
54 changes: 48 additions & 6 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,59 @@ module(
version = "1.0.0",
)

# 1. bazel_skylib
# Core Aspect Build Rules
bazel_dep(name = "aspect_rules_js", version = "2.0.1")
bazel_dep(name = "aspect_rules_ts", version = "3.0.0")
bazel_dep(name = "aspect_rules_webpack", version = "0.16.0")
bazel_dep(name = "aspect_rules_rollup", version = "2.0.0")
bazel_dep(name = "aspect_bazel_lib", version = "2.7.7")

# Node.js Toolchain Configuration
bazel_dep(name = "rules_nodejs", version = "6.2.0")
bazel_dep(name = "platforms", version = "0.0.10")

node_ext = use_extension("//tools:node_extension.bzl", "node_ext")
use_repo(
node_ext,
"nodejs",
"nodejs_darwin_amd64",
"nodejs_darwin_arm64",
"nodejs_linux_amd64",
"nodejs_linux_arm64",
"nodejs_windows_amd64",
node_toolchains = "nodejs_toolchains",
)

register_toolchains(
"@node_toolchains//:all",
)

# NPM Lock File Translation to Bzlmod Package Trees
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm", dev_dependency = True)
npm.npm_translate_lock(
name = "npm",
pnpm_lock = "//:pnpm-lock.yaml",
)
use_repo(npm, "npm")

pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
use_repo(pnpm, "pnpm")

# TypeScript Compiler Repository Setup
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext")
rules_ts_ext.deps()
use_repo(rules_ts_ext, "npm_typescript")

# bazel_skylib
bazel_dep(name = "bazel_skylib", version = "1.7.1")

# 2. com_google_protobuf
# com_google_protobuf
bazel_dep(name = "protobuf", version = "27.3", repo_name = "com_google_protobuf")


# 4. rules_go
# rules_go
bazel_dep(name = "rules_go", version = "0.49.0", repo_name = "io_bazel_rules_go")

# 5. bazel_gazelle
# bazel_gazelle
bazel_dep(name = "gazelle", version = "0.37.0", repo_name = "bazel_gazelle")

# Go dependencies via Gazelle's go_deps extension
Expand All @@ -40,6 +82,6 @@ use_repo(
"org_golang_x_text",
)

# 6. Custom gcloud SDK extension
# Custom gcloud SDK extension
gcloud_sdk_ext = use_extension("//tools/gcloud:extensions.bzl", "gcloud_sdk_extension")
use_repo(gcloud_sdk_ext, "gcloud_sdk")
Loading
Loading