# Copyright 2018 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_binary", "go_library", "go_test")

go_library(
    name = "cos_customizer_lib",
    srcs = [
        "disable_auto_update.go",
        "finish_image_build.go",
        "flag_vars.go",
        "install_gpu.go",
        "main.go",
        "run_script.go",
        "seal_oem.go",
        "start_image_build.go",
        "install_packages.go",
    ],
    importpath = "cos.googlesource.com/cos/tools.git/src/cmd/cos_customizer",
    visibility = ["//visibility:public"],
    deps = [
        "//src/pkg/config",
        "//src/pkg/fs",
        "//src/pkg/gce",
        "//src/pkg/preloader",
        "//src/pkg/provisioner",
        "//src/pkg/tools/partutil",
        "//src/pkg/utils",
        "@com_github_google_subcommands//:subcommands",
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_google_api//compute/v1:compute",
        "@org_golang_google_api//iterator",
        "@org_golang_google_api//option",
        "@org_golang_x_oauth2//google",
    ],
)

go_test(
    name = "cos_customizer_test",
    srcs = [
        "finish_image_build_test.go",
        "flag_vars_test.go",
        "install_gpu_test.go",
        "run_script_test.go",
        "start_image_build_test.go",
    ],
    embed = [":cos_customizer_lib"],
    deps = [
        "//src/pkg/config",
        "//src/pkg/fakes",
        "//src/pkg/fs",
        "//src/pkg/provisioner",
        "@com_github_google_go_cmp//cmp",
        "@com_github_google_subcommands//:subcommands",
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_google_api//compute/v1:compute",
    ],
)

go_binary(
    name = "cos_customizer",
    embed = [":cos_customizer_lib"],
    visibility = ["//visibility:public"],
)
