#!/usr/bin/env bash

# Copyright 2018 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT

set -eo pipefail

usage() {
  echo "usage: ${0} {source_image} {destination_image} {depfile}"
  exit 1
}

if [ "$#" -ne 3 ]; then
  usage
fi

declare -r SOURCE_IMAGE=${1}
declare -r TARGET_IMAGE=${2}
declare -r DEPFILE=${3}

# Ensure that the source image exists even if it is a dummy.
mkdir -p $(dirname ${SOURCE_IMAGE})
if [ ! -f "${SOURCE_IMAGE}" ]; then
  echo "WARNING: ${SOURCE_IMAGE} not found, using a dummy image. See" \
       "src/virtualization/docs/README.md for manual build instructions."
  touch "${SOURCE_IMAGE}"
fi

# Copy source to target.
rm -f "${TARGET_IMAGE}"
cp "${SOURCE_IMAGE}" "${TARGET_IMAGE}"

# Write a depfile to force the copy to happen when the image file changes.
#
# See comments in "guest_package.gni" as to why this is required.
echo "${TARGET_IMAGE}: ${SOURCE_IMAGE}" > $DEPFILE
