Skip to content
Merged
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
11 changes: 11 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
common --tool_java_language_version=21
common --tool_java_runtime_version=remotejdk_21
common --java_runtime_version=remotejdk_21

# Execute/run binary targets in the same working directory `bazel run ...` is executed.
# If not set the working directory is set to the targets runfiles directory.
# This allows e.g. `bazel run //test-schemas:generate-domain-classes` to regenerate
# the checked-in domain classes in the source tree.
run --run_in_cwd

try-import user.bazelrc
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9.1.0
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
target
/project/project/

##############
# Bazel #
##############
user.bazelrc
bazel-*
/cpg.bin
/cpg.bin.tmp
/cpg.fg
Expand Down
1 change: 1 addition & 0 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ runner.dialect = scala3
preset = IntelliJ
maxColumn = 140
align.preset = true
project.excludeFilters = [".*\\.sbt$", ".*\\.sc$", "project/.*\\.scala", "benchmarks/.*\\.scala"]
11 changes: 11 additions & 0 deletions BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
exports_files([".scalafmt.conf"])

alias(
name = "format",
actual = "//bazel/format",
)

alias(
name = "formatCheck",
actual = "//bazel/format:format.check",
)
90 changes: 90 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
module(name = "flatgraph")

bazel_dep(name = "bazel_tooling")
bazel_dep(name = "rules_jvm_external", version = "7.0")
bazel_dep(name = "aspect_rules_lint", version = "2.5.2")
bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.2")

# Keep in sync with the version used in codescience/MODULE.bazel
BAZEL_TOOLING_VERSION = "4bcf42cc81b574b91699d696b504637677640871"

git_override(
module_name = "bazel_tooling",
commit = "{}".format(BAZEL_TOOLING_VERSION),
remote = "git@github.com:joernio/bazel_tooling.git",
)

bazel_dep(name = "rules_scala", version = "7.2.5")

scala_config = use_extension(
"@rules_scala//scala/extensions:config.bzl",
"scala_config",
)

# Matches the sbt build (ThisBuild / scalaVersion). n.b. the plus_one_toolchain
# from bazel_tooling is pinned to this scala version (see BAZEL_TOOLING_VERSION).
scala_config.settings(
scala_version = "3.8.3",
)

scala_deps = use_extension(
"@rules_scala//scala/extensions:deps.bzl",
"scala_deps",
)
scala_deps.scala()
scala_deps.scalatest()

register_toolchains("@bazel_tooling//scala_toolchain:plus_one_toolchain")

# Import and configure external maven libraries.
# Artifact pinning documentation:
# https://github.com/bazel-contrib/rules_jvm_external/blob/master/docs/bzlmod.md
# To repin after changing the artifact list: `REPIN=1 bazel run @maven//:pin`
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
name = "maven",
artifacts = [
"org.slf4j:slf4j-api:2.0.17",
"org.slf4j:slf4j-simple:2.0.17",
"com.lihaoyi:ujson_3:4.4.1",
"com.github.luben:zstd-jni:1.5.7-11",
"net.oneandone.reflections8:reflections8:0.11.7",
"com.github.tototoshi:scala-csv_3:2.0.0",
"org.apache.commons:commons-text:1.13.0",
"org.scala-lang.modules:scala-xml_3:2.4.0",
"io.spray:spray-json_3:1.3.6",
"com.fasterxml.jackson.core:jackson-core:2.17.2",
"com.github.scopt:scopt_3:4.1.0",
"com.lihaoyi:os-lib_3:0.11.4",
"org.scalameta:scalafmt-dynamic_2.13:3.9.6",
"io.shiftleft:overflowdb-core_3:1.194",
"com.github.pathikrit:better-files_3:3.9.2",
"org.scalamock:scalamock_3:7.3.2",
],
excluded_artifacts = [
# Exclude any scala libraries which might come in transitively.
# rules_scala will add the correct scala library for the configured Scala version.
# That way we do not have conflicts between different scala library versions on
# the build classpath.
"org.scala-lang:scala3-library_3",
"org.scala-lang:scala-library",
],
fetch_sources = True,
lock_file = "//:maven_install.json",
repositories = [
"https://repo1.maven.org/maven2",
],
)
use_repo(maven, "maven")

maven.install(
name = "format_maven",
artifacts = [
"org.scalameta:scalafmt-cli_2.13:3.9.6",
],
lock_file = "//:format_maven_install.json",
repositories = [
"https://repo1.maven.org/maven2",
],
)
use_repo(maven, "format_maven")
1,205 changes: 1,205 additions & 0 deletions MODULE.bazel.lock

Large diffs are not rendered by default.

Empty file added bazel/BUILD
Empty file.
17 changes: 17 additions & 0 deletions bazel/format/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
load("@aspect_rules_lint//format:defs.bzl", "format_multirun")
load("//bazel:java.bzl", "java_binary")

java_binary(
name = "scalafmt",
data = ["//:.scalafmt.conf"],
main_class = "org.scalafmt.cli.Cli",
runtime_deps = ["@format_maven//:org_scalameta_scalafmt_cli_2_13"],
)

format_multirun(
name = "format",
scala = ":scalafmt",
starlark = "@buildifier_prebuilt//:buildifier",
starlark_check_args = ["-mode=diff"],
visibility = ["//visibility:public"],
)
19 changes: 19 additions & 0 deletions bazel/java.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
load("@bazel_tooling//:java_rule_factory.bzl", "make_java_rules")

_rules = make_java_rules(
java_common_opts = [
"-g",
# Matches the sbt build (ThisBuild / javacOptions).
"--release=17",
"-Xlint:all",
"-Xlint:-cast",
"-XepDisableAllChecks",
],
common_java_binary_runtime_deps = [],
common_java_test_runtime_deps = [],
)

java_library = _rules.java_library
java_binary = _rules.java_binary
java_test = _rules.java_test
java_import = _rules.java_import
23 changes: 23 additions & 0 deletions bazel/scala.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
load("@bazel_tooling//:scala_rule_factory.bzl", "make_scala_rules")

_rules = make_scala_rules(
scala_version = "3.8.3",
common_scalacopts = [
"-java-output-version",
"17",
"-no-indent",
"-old-syntax",
"-deprecation",
"-feature",
"-language:implicitConversions",
"-Wconf:msg=Implicit parameters should be provided with a `using` clause:s",
],
common_scala_binary_runtime_deps = [],
common_scala_test_runtime_deps = [
"@maven//:org_slf4j_slf4j_simple",
],
)

scala_library = _rules.scala_library
scala_binary = _rules.scala_binary
scala_test = _rules.scala_test
29 changes: 29 additions & 0 deletions core/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
load("//bazel:scala.bzl", "scala_library", "scala_test")

scala_library(
name = "core",
srcs = glob([
"src/main/java/**/*.java",
"src/main/scala/**/*.java",
"src/main/scala/**/*.scala",
]),
visibility = ["//visibility:public"],
deps = [
"@maven//:com_github_luben_zstd_jni",
# ujson.Value extends geny.Writable and ujson.AstTransformer extends
# upickle.core.Transformer - both must be on the compile classpath,
# otherwise the scala compiler crashes with "trait Value has non-class parent"
"@maven//:com_lihaoyi_geny_3",
"@maven//:com_lihaoyi_ujson_3",
"@maven//:com_lihaoyi_upickle_core_3",
"@maven//:org_slf4j_slf4j_api",
],
)

scala_test(
name = "tests",
srcs = glob(["src/test/scala/**/*.scala"]),
deps = [
":core",
],
)
24 changes: 24 additions & 0 deletions domain-classes-generator/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
load("//bazel:scala.bzl", "scala_binary", "scala_library")

scala_library(
name = "domain-classes-generator",
srcs = glob(["src/main/scala/**/*.scala"]),
visibility = ["//visibility:public"],
deps = [
"@maven//:com_github_scopt_scopt_3",
"@maven//:com_lihaoyi_os_lib_3",
"@maven//:org_apache_commons_commons_text",
"@maven//:org_scalameta_scalafmt_dynamic_2_13",
"@maven//:org_slf4j_slf4j_api",
],
)

# Entry point for generating domain classes from a schema definition,
# e.g. `bazel run //domain-classes-generator:codegen -- -c 'some.schema.Class$' -f instance -o out/dir`
scala_binary(
name = "codegen",
main_class = "flatgraph.codegen.Main",
runtime_deps = [
":domain-classes-generator",
],
)
Loading
Loading