load("@io_bazel_rules_docker//python3:image.bzl", "py3_image")
load("@io_bazel_rules_docker//container:container.bzl", "container_push")

load("@pip_modules//:requirements.bzl", "requirement")

alias(
    name = "binary",
    actual = ":image.binary",
)

py3_image(
    name = "image",
    srcs = glob(
        ["**/*.py"],
        exclude = ["proto/**"],
    ),
    base = "//images/production:base-python-image",
    data = [
        "configs/base.yaml",
        "configs/development.yaml",
        "configs/logging.yaml",
        "configs/production.yaml",
        "configs/testing.yaml",
    ],
    main = "main.py",
    srcs_version = "PY3ONLY",
    visibility = ["//visibility:public"],
    deps = [
        requirement("aiodns"),
        requirement("aiohttp"),
        requirement("aiohttp_socks"),
        requirement("aioipfs"),
        requirement("cchardet"),
        requirement("orjson"),
        requirement("prometheus-client"),
        requirement("psycopg2-binary"),
        requirement("python-socks"),
        requirement("tenacity"),
        requirement("uvloop"),
        "//idm/api2/proto:idm_proto_py",
        requirement("giogrobid"),
        "//library/aiogrpctools",
        requirement("aiokit"),
        "//library/aiopostgres",
        "//library/configurator",
        "//library/telegram",
        "//nexus/hub/proto:hub_grpc_py",
        "//nexus/hub/proto:hub_proto_py",
        "//nexus/meta_api/aioclient",
        "//nexus/models/proto:models_proto_py",
        "//nexus/pylon",
        "//nexus/views/telegram",
    ],
)

container_push(
    name = "push-latest",
    format = "Docker",
    image = ":image",
    registry = "registry.example.com",
    repository = "nexus-hub",
    tag = "latest",
)

container_push(
    name = "push-testing",
    format = "Docker",
    image = ":image",
    registry = "registry.example.com",
    repository = "nexus-hub",
    tag = "testing",
)

