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",
            "configs/**/*.py",
            "daemons/**/*.py",
            "models/**",
            "proto/**",
            "services/**",
        ],
        exclude = [
            "**/__pycache__/**",
            "**/*.pyc",
            "**/README",
            "**/*.mako",
            "proto/**/*.py",
        ],
    ),
    base = "//images/production:base-python-image",
    data = [
        "configs/base.yaml",
        "configs/logging.yaml",
    ],
    layers = [
        requirement("grpcio"),
        requirement("pypika"),
        requirement("uvloop"),
        "//idm/api/proto:idm_grpc_py",
        "//idm/api/proto:idm_proto_py",
        "//library/aiogrpctools",
        requirement("aiokit"),
        "//library/aiopostgres",
        "//library/configurator",
        "//library/telegram",
        requirement("izihawa_utils"),
    ],
    main = "main.py",
    srcs_version = "PY3ONLY",
    visibility = ["//visibility:public"],
)

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

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

