#!/bin/bash
# Copyright 2020 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.

#### CATEGORY=Run, Inspect and Debug
### run a host tool produced by the build

## usage: fx host-tool [--no-build|--force-build] TOOLNAME [TOOL_ARGS...]
##
## This looks for a tool named TOOLNAME in tool-paths.json and executes it
## with the provided TOOL_ARGS.
##    --no-build      does not attempt to build the tool if it does not exist
##    --force-build   always attempt to build the tool, even if it exists

## If the tool is not known to the build system, for example if it is not in
## the GN build graph, a proper message will be printed and the script fails.
## This script is specially useful for other scripts, via fx-command-run,
## although it can also be used directly by final users.

set -e

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

build=true
force_build=false

if [[ $# -gt 0 ]]; then
  if [[ $1 == '--no-build' ]]; then
    build=false
    shift
  elif [[ $1 == '--force-build' ]]; then
    force_build=true
    shift
  fi
fi

if [[ $# -eq 0 || $1 == -* ]]; then
  fx-error "Invalid syntax"
  fx-command-help
  exit 1
fi

toolname="$1"
shift

# list-build-artifacts fails with a reasonable error message if tool is unknown
toolpath="$(fx-command-run list-build-artifacts --name "${toolname}" --expect-one tools)"

needs_build=false

if $force_build; then
  needs_build=true
elif [[ ! -f "${FUCHSIA_BUILD_DIR}/${toolpath}" ]]; then
  if ! $build; then
    fx-error "Tool does not exist and flag --no-build was used. Please build it first."
    fx-error "  ${FUCHSIA_BUILD_DIR}/${toolpath}"
    exit 2
  fi
  needs_build=true
fi

if $needs_build; then
  fx-command-run build --no-zircon "${toolpath}"
fi

"${FUCHSIA_BUILD_DIR}/${toolpath}" "$@"
