#!/usr/bin/env sh

################################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
# limitations under the License.
################################################################################

cd $(dirname $0)

save () {
  for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
  echo " "
}

orig_args=$(save "$@")
args=$orig_args

while IFS=$'\n' read -r line_data; do
  # echo "$line_data"
  set -f
  set -- $line_data
  set +f
  OLD_PROJECT=$1 NEW_PROJECT=$2
  args=$(printf '%s' "$args" | sed -e "s/$OLD_PROJECT/$NEW_PROJECT/g")
done < project-mappings

eval "set -- $args"

if [ "$orig_args" != "$args" ]; then
  cat deprecation-warning.txt
  message="Changed command to

  gradlew $@

  "
  echo "$message"
fi

./gradlew_orig "$@"
