# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
load("@io_bazel_rules_go//extras:embed_data.bzl", "go_embed_data")

# Our goal is for this program to be embedded into this Go package. Go embed
# only allows files in the same package directory to be embedded. So we need to
# use a "no-op" genrule to place this binary in the same directory as the
# package source.
genrule(
    name = "handle_disk_layout.bin",
    srcs = ["//src/cmd/handle_disk_layout:handle_disk_layout_bin"],
    outs = ["_handle_disk_layout.bin"],
    cmd = "cp $< $@",
)

genrule(
    name = "veritysetup.img",
    srcs = ["//:veritysetup.tar"],
    outs = ["_veritysetup.img"],
    cmd = "cp $< $@",
)

genrule(
    name = "docker_credential_gcr",
    srcs = ["@com_github_googlecloudplatform_docker_credential_gcr//:docker-credential-gcr"],
    outs = ["docker-credential-gcr"],
    cmd = "cp $< $@",
)

go_library(
    name = "provisioner",
    srcs = [
        "config.go",
        "disable_auto_update_step.go",
        "disk_layout.go",
        "gpu_setup_script.go",
        "install_gpu_step.go",
        "provisioner.go",
        "run_script_step.go",
        "seal_oem_step.go",
        "state.go",
        "systemd.go",
    ],
    embedsrcs = [
        ":handle_disk_layout.bin",
        ":veritysetup.img",
        ":docker_credential_gcr",
    ],
    importpath = "github.com/GoogleCloudPlatform/cos-customizer/src/pkg/provisioner",
    visibility = ["//visibility:public"],
    deps = [
        "//src/pkg/tools",
        "//src/pkg/tools/partutil",
        "//src/pkg/utils",
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_x_sys//unix",
    ],
)

go_test(
    name = "provisioner_test",
    srcs = ["provisioner_test.go"],
    data = glob(["testdata/**"]),
    embed = [":provisioner"],
    deps = [
        "//src/pkg/fakes",
        "@org_golang_x_sys//unix",
    ],
)
