load("@bazel_gazelle//:def.bzl", "gazelle_binary")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
load(":gazelle_test.bzl", "gazelle_test")

go_library(
    name = "python",
    srcs = [
        "configure.go",
        "file_parser.go",
        "fix.go",
        "generate.go",
        "kinds.go",
        "language.go",
        "parser.go",
        "resolve.go",
        "std_modules.go",
        "target.go",
    ],
    # NOTE @aignas 2023-12-03: currently gazelle does not support embedding
    # generated files, but 3.11.txt is generated by a build rule.
    #
    # You will get a benign error like when running gazelle locally:
    # > 8 gazelle: .../rules_python/gazelle/python/std_modules.go:24:3: pattern 3.11.txt: matched no files
    #
    # See following for more info:
    # https://github.com/bazelbuild/bazel-gazelle/issues/1513
    embedsrcs = ["stdlib_list.txt"],  # keep # TODO: use user-defined version?
    importpath = "github.com/bazel-contrib/rules_python/gazelle/python",
    visibility = ["//visibility:public"],
    deps = [
        "//pythonconfig",
        "@bazel_gazelle//config:go_default_library",
        "@bazel_gazelle//label:go_default_library",
        "@bazel_gazelle//language:go_default_library",
        "@bazel_gazelle//repo:go_default_library",
        "@bazel_gazelle//resolve:go_default_library",
        "@bazel_gazelle//rule:go_default_library",
        "@com_github_bazelbuild_buildtools//build",
        "@com_github_bmatcuk_doublestar_v4//:doublestar",
        "@com_github_emirpasic_gods//lists/singlylinkedlist",
        "@com_github_emirpasic_gods//sets/treeset",
        "@com_github_emirpasic_gods//utils",
        "@com_github_smacker_go_tree_sitter//:go-tree-sitter",
        "@com_github_smacker_go_tree_sitter//python",
        "@org_golang_x_sync//errgroup",
    ],
)

copy_file(
    name = "stdlib_list",
    src = select(
        {
            "@rules_python//python/config_settings:is_python_3.10": "@python_stdlib_list//:stdlib_list/lists/3.10.txt",
            "@rules_python//python/config_settings:is_python_3.11": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
            "@rules_python//python/config_settings:is_python_3.12": "@python_stdlib_list//:stdlib_list/lists/3.12.txt",
            "@rules_python//python/config_settings:is_python_3.8": "@python_stdlib_list//:stdlib_list/lists/3.8.txt",
            "@rules_python//python/config_settings:is_python_3.9": "@python_stdlib_list//:stdlib_list/lists/3.9.txt",
            # This is the same behaviour as previously
            "//conditions:default": "@python_stdlib_list//:stdlib_list/lists/3.11.txt",
        },
    ),
    out = "stdlib_list.txt",
    allow_symlink = True,
)

# gazelle:exclude testdata/

gazelle_test(
    name = "python_test",
    srcs = ["python_test.go"],
    data = [
        ":_gazelle_binary_with_proto",
        ":gazelle_binary",
    ],
    test_dirs = glob(
        # Use this so that we don't need to manually maintain the list.
        ["testdata/*"],
        exclude = ["testdata/*.md"],
        # The directories aren't inputs themselves; we just want their
        # names.
        exclude_directories = 0,
    ),
    deps = [
        "@bazel_gazelle//testtools:go_default_library",
        "@com_github_ghodss_yaml//:yaml",
        "@io_bazel_rules_go//go/runfiles:go_default_library",
        "@io_bazel_rules_go//go/tools/bazel:go_default_library",
    ],
)

gazelle_binary(
    name = "gazelle_binary",
    languages = [":python"],
    visibility = ["//visibility:public"],
)

# Only used by testing
gazelle_binary(
    name = "_gazelle_binary_with_proto",
    languages = [
        "@bazel_gazelle//language/proto",
        ":python",
    ],
    visibility = ["//visibility:private"],
)

filegroup(
    name = "distribution",
    srcs = glob(["**"]),
    visibility = ["//:__pkg__"],
)

go_test(
    name = "default_test",
    srcs = [
        "file_parser_test.go",
        "std_modules_test.go",
    ],
    embed = [":python"],
    deps = [
        "@com_github_stretchr_testify//assert",
    ],
)
