#!/bin/bash
# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

### start fuchsia in qemu with a FVM disk
## start fuchsia in qemu with a FVM disk
##
## This command delegates to //zircon/scripts/run-zircon. Flags are documented
## in that script, and can be discovered by passing -h or --help.
##

set -e

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/image_build_vars.sh || exit $?
source "${FUCHSIA_DIR}/buildtools/vars.sh"

for arg in "$@"; do
  if [[ "$arg" = "-h" || "$arg" = "--help" ]]; then
    fx-command-help
    "${FUCHSIA_DIR}/zircon/scripts/run-zircon" -h
    exit 1
  fi
done

qemu_dir="${BUILDTOOLS_QEMU_DIR}/bin"

# Construction of a qcow image prevents qemu from writing back to the
# build-produced image file, which could cause timestamp issues with that file.
# Construction of the new ZBI adds //.ssh/authorized_keys for SSH access.
imgdir="$(mktemp -d)"
if [[ ! -d "${imgdir}" ]]; then
  echo >&2 "Failed to create temporary directory"
  exit 1
fi
fvmimg="${imgdir}/fvm.blk"
kernelzbi="${imgdir}/fuchsia-ssh.zbi"
trap 'rm "${fvmimg}" "${kernelzbi}" && rmdir "${imgdir}"' EXIT

stat_flags=()
if [[ $(uname) == "Darwin" ]]; then
  stat_flags+=("-x")
fi
stat_output=$(stat "${stat_flags[@]}" "${FUCHSIA_BUILD_DIR}/${IMAGE_FVM_RAW}")
if [[ "$stat_output" =~ Size:\ ([0-9]+) ]]; then
  size="${BASH_REMATCH[1]}"
  newsize=$(($size * 2))
  # We must take a copy of the build artifact, rather than re-use it, as we
  # need to modify it in order to extend it.
  echo -n "Creating disk image..."
  cp "${FUCHSIA_BUILD_DIR}/${IMAGE_FVM_RAW}" "${fvmimg}"
  "${ZIRCON_TOOLS_DIR}/fvm" "${fvmimg}" extend --length "${newsize}"
  echo "done"
else
  fx-error "could not extend fvm, unable to stat fvm image"
fi

"${ZIRCON_TOOLS_DIR}/zbi" -o "${kernelzbi}" "${FUCHSIA_BUILD_DIR}/${IMAGE_ZIRCONA_ZBI}" \
  --entry "data/ssh/authorized_keys=${FUCHSIA_DIR}/.ssh/authorized_keys"

"${FUCHSIA_DIR}/zircon/scripts/run-zircon" \
  -a "${FUCHSIA_ARCH}" \
  -q "${qemu_dir}" \
  -G 3 \
  -t "${FUCHSIA_BUILD_DIR}/${IMAGE_QEMU_KERNEL_RAW}" \
  -z "${kernelzbi}" \
  -d \
  -D "${fvmimg}" \
  --diskfmt="raw" \
  "$@"

