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

# Script for batch processing (setting flags necessary for merging) of large
# stacks of gerrit patches.

TMPF=$(mktemp -t "$(basename "$0").XXXXXX")
trap 'rm -f "${TMPF}"' EXIT

usage() {
  printf "one parameter is required, " >&2
  printf "the number of the CL on the top of the stack of patches\n" >&2
  exit 1
}

if [[ $# != 1 ]]; then
  usage
fi

if ! gerrit deps $1 > "${TMPF}" 2>&1; then
  echo "gerrit error:" >&2
  cat "${TMPF}" >&2
  exit 1
fi

cat "${TMPF}"
printf "Those are the patches which will be marked, looks right?(y[es]/no):"
read answer
case "${answer}" in
  (y|Y|yes|YES)
    :
    ;;
  (*) echo "ok, doing nothing"
      exit 1
      ;;
esac

# each line is expected to be of the following format:
#
# <url>/<cl number>[/] <cl description>
#
# First eliminate escape sequence at the end of the url, if any, and then drop
# the rest of the line after the first space, potentially prepeneded by a
# backslash, and then eliminate the beginning of the string up to the last
# backslash, thus leaving just the patch number.
patch_list="$(sed -e 's|\x1b.\{1,5\} | |' -e 's|/\? .*||;s|.*/||' "${TMPF}" |
    xargs)"

commands=('ready:1' 'verify:1' 'review:2')
for cmd in "${commands[@]}"; do
  action="${cmd/:*}"
  value="${cmd/*:}"
  gcmd=(gerrit "${action}" "${patch_list}" "${value}")
  echo "running ${gcmd[*]}"
  if ! "${gcmd[@]}"; then
    echo "failed!!" >&2
    exit 1
  fi
done
