# 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_library", "go_test")

genrule(
    name = "scratch",
    outs = ["scratch.img"],
    cmd = "\
fallocate -l 512M $@;\
mkfs.ext4 $@;\
tune2fs -c0 -i0 $@;\
e2label $@ SCRATCH",
)

genrule(
    name = "cidata",
    srcs = [
        "//:src/data/startup.yaml",
        "//src/cmd/provisioner:provisioner_amd64",
        "//src/cmd/provisioner:provisioner_arm64",
        "//src/cmd/metadata_watcher:metadata_watcher_amd64",
        "//src/cmd/metadata_watcher:metadata_watcher_arm64",
    ],
    outs = ["cidata.img"],
    cmd = "\
$(location @dosfstools//:mkfs.fat) -n CIDATA -S 512 -s 8 -C $@ 131072;\
touch meta-data;\
$(location @mtools//:mcopy) -i $@ $(location //:src/data/startup.yaml) ::/user-data;\
$(location @mtools//:mcopy) -i $@ meta-data ::/meta-data;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/provisioner:provisioner_amd64) ::/provisioner_amd64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/provisioner:provisioner_arm64) ::/provisioner_arm64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/metadata_watcher:metadata_watcher_amd64) ::/metadata_watcher_amd64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/metadata_watcher:metadata_watcher_arm64) ::/metadata_watcher_arm64;",
    tools = [
        "@dosfstools//:mkfs.fat",
        "@mtools//:mcopy",
    ],
)

go_library(
    name = "preloader",
    srcs = [
        "gcs.go",
        "preload.go",
    ],
    embedsrcs = [
        ":cidata",
	":scratch"
    ],
    importpath = "cos.googlesource.com/cos/tools.git/src/pkg/preloader",
    visibility = ["//visibility:public"],
    deps = [
        "//src/pkg/config",
        "//src/pkg/fs",
        "//src/pkg/provisioner",
        "//src/pkg/utils",
        "@com_google_cloud_go_storage//:storage",
        "@org_golang_google_api//iterator",
    ],
)

go_test(
    name = "preloader_test",
    size = "large",
    srcs = [
        "gcs_test.go",
        "preload_test.go",
    ],
    embed = [":preloader"],
    deps = [
        "//src/pkg/config",
        "//src/pkg/fakes",
        "//src/pkg/fs",
        "//src/pkg/provisioner",
        "@com_github_google_go_cmp//cmp",
        "@com_github_google_go_cmp//cmp/cmpopts",
        "@org_golang_google_api//compute/v1:compute",
    ],
)
