load("@aspect_bazel_lib_host//:defs.bzl", "host")
load("@bazel_gazelle//:def.bzl", "DEFAULT_LANGUAGES", "gazelle", "gazelle_binary")
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@buildifier_prebuilt//:rules.bzl", "buildifier")
load("//lib:diff_test.bzl", "diff_test")
load("//lib:tar.bzl", "mtree_spec")
load("//lib:testing.bzl", "assert_contains")
load("//lib:utils.bzl", "is_bazel_7_or_greater")
load("//lib:write_source_files.bzl", "write_source_files")
load("//lib:yq.bzl", "yq")

# gazelle:prefix github.com/aspect-build/bazel-lib

gazelle_binary(
    name = "gazelle_bin",
    languages = select({
        # TODO: under bzlmod we get go linking errors when adding
        # the skylib gazelle plugin.
        # https://github.com/bazelbuild/rules_go/issues/1877
        "@aspect_bazel_lib//lib:bzlmod": DEFAULT_LANGUAGES,
        "//conditions:default": DEFAULT_LANGUAGES + [
            "@bazel_skylib_gazelle_plugin//bzl",
        ],
    }),
)

gazelle(
    name = "gazelle",
    gazelle = "gazelle_bin",
    mode = "fix",
)

gazelle(
    name = "gazelle.check",
    gazelle = "gazelle_bin",
    mode = "diff",
)

gazelle(
    name = "gazelle_update_repos",
    args = [
        "-build_file_proto_mode=disable_global",
        "-from_file=go.mod",
        "-to_macro=deps.bzl%go_dependencies",
        "-prune",
    ],
    command = "update-repos",
)

buildifier(
    name = "buildifier",
    exclude_patterns = ["./.git/*"],
    lint_mode = "fix",
    mode = "fix",
    tags = ["manual"],  # tag as manual so windows ci does not build it by default
)

buildifier(
    name = "buildifier.check",
    exclude_patterns = ["./.git/*"],
    lint_mode = "warn",
    mode = "diff",
    tags = ["manual"],  # tag as manual so windows ci does not build it by default
)

alias(
    name = "format",
    actual = "//tools/format",
    tags = ["manual"],  # tag as manual so windows ci does not build it by default
)

bzl_library(
    name = "internal_deps",
    srcs = ["internal_deps.bzl"],
    visibility = ["//visibility:public"],
    deps = [
        "@bazel_tools//tools/build_defs/repo:http.bzl",
        "@bazel_tools//tools/build_defs/repo:utils.bzl",
    ] + (["@bazel_tools//tools/build_defs/repo:cache.bzl"] if is_bazel_7_or_greater() else []),
)

# write_source_files() to a git ignored subdirectory of the root
genrule(
    name = "write_source_file_root",
    outs = ["write_source_file-root_directory/test.txt"],
    cmd = "mkdir -p $$(dirname $@) && echo 'test' > $@",
    visibility = ["//visibility:private"],
)

write_source_files(
    name = "write_source_file_root-test",
    diff_test = False,
    files = {
        "test-out/dist/write_source_file_root-test/test.txt": ":write_source_file_root",
        "test-out/dist/write_source_file_root-test_b/test.txt": ":write_source_file_root",
    },
)

# Test that yq works in the root package
yq(
    name = "yq_root-test",
    srcs = ["//lib/tests/yq:a.yaml"],
    expression = ".",
)

# Test case: diff_test with a file in a directory prefixed with "external"
# stamped in the root package
write_file(
    name = "file_in_external_prefixed_dir",
    out = "external-dir/foo.txt",
    content = ["foo"],
)

copy_file(
    name = "copy_of_file_in_external_prefixed_dir",
    src = "external-dir/foo.txt",
    out = "foo_copy.txt",
)

diff_test(
    name = "case_file_has_external_prefix",
    file1 = "external-dir/foo.txt",
    file2 = "foo_copy.txt",
)

assert_contains(
    name = "bazel_version_test",
    actual = ".bazelversion",
    expected = str(host.bazel_version),
)

bzl_library(
    name = "deps",
    srcs = ["deps.bzl"],
    visibility = ["//visibility:public"],
    deps = ["@bazel_gazelle//:deps"],
)

# Test case for mtree_spec: Ensure that multiple entries at the root directory are handled correctly (bug #851)
# See lib/tests/tar/BUILD.bazel for why this is here.
write_file(
    name = "tar_test13_main",
    out = "13project/__main__.py",
    content = ["__main__.py"],
)

write_file(
    name = "tar_test13_bin",
    out = "13project_bin",
    content = ["project_bin"],
)

mtree_spec(
    name = "tar_test13_mtree_unsorted",
    srcs = [
        ":tar_test13_bin",
        ":tar_test13_main",
    ],
)

# NOTE: On some systems, the mtree_spec output can have a different order.
#       To make the test less brittle, we sort the mtree output and replace the BINDIR with a constant placeholder
genrule(
    name = "tar_test13_mtree",
    srcs = [":tar_test13_mtree_unsorted"],
    outs = ["actual13.mtree"],
    cmd = "sort $< | sed 's#$(BINDIR)#{BINDIR}#' >$@",
)

diff_test(
    name = "tar_test13",
    file1 = "tar_test13_mtree",
    file2 = "//lib/tests/tar:expected13.mtree",
)
