sqruff-lib 0.35.4

A high-speed SQL linter.
Documentation
load("@crates//:defs.bzl", "all_crate_deps", "crate_deps")
load("@rules_rust//rust:defs.bzl", "rust_library", "rust_shared_library")

ALL_FEATURES = [
    "parser",
]

rust_library(
    name = "sqruff-lib",
    srcs = glob(["src/**/*.rs"]),
    compile_data = glob(["src/**/*.cfg"]),
    crate_features = ALL_FEATURES,
    proc_macro_deps = all_crate_deps(proc_macro = True),
    visibility = ["//visibility:public"],
    deps = all_crate_deps(normal = True) + [
        "//crates/lib-core:sqruff-lib-core",
        "//crates/lib-dialects:sqruff-lib-dialects",
    ],
)

# Variant with python feature enabled for codegen (includes python templater)
rust_library(
    name = "sqruff-lib-python",
    srcs = glob(["src/**/*.rs"]),
    compile_data = glob(["src/**/*.cfg"]),
    crate_features = ALL_FEATURES + ["python"],
    crate_name = "sqruff_lib",
    proc_macro_deps = all_crate_deps(proc_macro = True),
    visibility = ["//visibility:public"],
    deps = all_crate_deps(normal = True) + [
        "//crates/lib-core:sqruff-lib-core",
        "//crates/lib-dialects:sqruff-lib-dialects",
    ],
)

# Explicit deps for WASM build - excludes pyo3 which doesn't support WASM
# Uses crate_deps() so versions stay aligned with Cargo.lock
WASM_CRATE_NAMES = [
    "common-path",
    "configparser",
    "fancy-regex",
    "hashbrown",
    "indexmap",
    "itertools",
    "lazy-regex",
    "log",
    "nohash-hasher",
    "pretty_assertions",
    "rayon",
    "regex",
    "serde",
    "serde_json",
    "smol_str",
    "strum",
    "walkdir",
]

WASM_PROC_MACRO_CRATE_NAMES = [
    "enum_dispatch",
    "strum_macros",
]

# rust_library for WASM - can be used as a dependency by other WASM targets
# Uses explicit deps to exclude pyo3 which doesn't support WASM
rust_library(
    name = "sqruff-lib-for-wasm",
    srcs = glob(["src/**/*.rs"]),
    compile_data = glob(["src/**/*.cfg"]),
    crate_features = ALL_FEATURES,
    crate_name = "sqruff_lib",
    proc_macro_deps = crate_deps(WASM_PROC_MACRO_CRATE_NAMES),
    visibility = ["//visibility:public"],
    deps = crate_deps(WASM_CRATE_NAMES) + [
        "//crates/lib-core:sqruff-lib-core",
        "//crates/lib-dialects:sqruff-lib-dialects",
    ],
)

filegroup(
    name = "machete_srcs",
    srcs = glob(
        [
            "src/**/*.rs",
            "src/**/*.cfg",
            "tests/**/*.rs",
            "benches/**/*.rs",
        ],
        allow_empty = True,
    ) + ["Cargo.toml"],
    visibility = ["//visibility:public"],
)

filegroup(
    name = "test_fixtures",
    srcs = glob(["test/**"]),
    visibility = ["//visibility:public"],
)