#!/bin/bash
# Copyright 2018 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=Other
### forward commands to vendor/*/scripts/devshell

## usage: fx vendor <vendor-dir> [command]

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

function main {
  if [[ $# -lt 2 ]]; then
    fx-command-help

    echo >&2 "commands: "
    for d in "${FUCHSIA_DIR}"/vendor/*; do
      # list all subcommands with summaries, grouped by categories
      commands vendor "$(basename "$d")" | xargs awk \
        -v hide_contrib=${hide_contrib} \
        -v show_deprecated=${show_deprecated} \
        -f "${FUCHSIA_DIR}/scripts/fx-help.awk"
    done

    return 1
  fi

  vendor_name="$1"
  command_name="$2"
  command_path="$(commands vendor "${vendor_name}" "${command_name}")"

  # expand metadata if it's a "*.fx" file
  command_path="$(find_exec_from_path "${command_path}")"

  if [[ ! -x "${command_path}" ]]; then
    echo >&2 "command ${command_name} not found on vendor ${vendor_name}!"
    return 1
  fi

  shift
  shift

  exec "${command_path}" "$@"
}

main "$@"
