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

set -e

OUTFILE="$1"
DEPFILE="$2"
DEPOUTFILE="$3"
RSPFILE="$4"
shift 4

ARGS=()
FILES=()

handle_args() {
  ARGS+=("$@")
  local arg in_files=false
  for arg in "$@"; do
    if [ "$arg" = --files ]; then
      in_files=true
    elif $in_files; then
      FILES+=("$arg")
    fi
  done
}

read_rspfile() {
  local arg args=()
  while read arg; do
    args+=("$arg")
  done
  handle_args "${args[@]}"
}

write_output() {
  local arg
  for arg in "${ARGS[@]}"; do
    echo "$arg"
  done
}

handle_args "$@"
read_rspfile < "$RSPFILE"
echo "$DEPOUTFILE: ${FILES[*]}" > "$DEPFILE"
write_output > "$OUTFILE"
