#!/bin/bash

# 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.

location=$(dirname $0)
rootdir=$(realpath ${location}/../)

while getopts "d:s:" opt; do
  case "${opt}" in
    d)
      local_runtime_dir="${OPTARG}"
      ;;
    s)
      staging_repo="${OPTARG}"
      ;;
    *)
      ;;
  esac
done
shift $((OPTIND-1))

if [ "$#" -lt 1 ]; then
    echo "usage: $0 [-s <staging repository>] [-d <local Camel K runtime project directory>] <Camel K runtime version>"
    exit 1
fi

camel_k_destination="$PWD/build/_maven_output"
camel_k_runtime_version=$1
maven_repo=${staging_repo:-https://repo1.maven.org/maven2}

# Refresh m2 distro project
rm -rf ${rootdir}/build/m2
mkdir -p ${rootdir}/build/m2

# Refresh maven output dir
rm -rf ${camel_k_destination}
mkdir -p ${camel_k_destination}

if [ -z "${local_runtime_dir}" ]; then
  # Remote M2 distro
  if [ ! -z $staging_repo ]; then
    # Change the settings to include the staging repo if it's not already there
    echo "INFO: updating the settings staging repository"
    sed -i "s;<url>https://repository\.apache\.org/content/repositories/orgapachecamel-.*</url>;<url>$staging_repo</url>;" $location/maven-settings.xml
  fi

  #TODO: remove this check once Camel K 1.16.0 is released
  if [[ $camel_k_runtime_version != *"SNAPSHOT"* ]]; then
    echo "WARN: Package Camel K runtime artifacts temporary removed because of https://github.com/apache/camel-k-runtime/pull/928 issue"
    echo "Please, remove this check when Camel K Runtime 1.16.0 is officially released"
    exit 0
  fi
  echo "Downloading Camel K runtime $camel_k_runtime_version M2 (may take some minute ...)"
  mvn -q dependency:copy -Dartifact="org.apache.camel.k:apache-camel-k-runtime:$camel_k_runtime_version:zip:m2" \
    -Dmdep.useBaseVersion=true \
    -DoutputDirectory=${rootdir}/build/m2 \
    -s $location/maven-settings.xml \
    -Papache
  unzip -q -o $PWD/build/m2/apache-camel-k-runtime-${camel_k_runtime_version}-m2.zip -d $camel_k_destination
else
  # Local M2 distro
  echo "Installing local Camel K runtime $camel_k_runtime_version M2 from $local_runtime_dir (may take some minute ...)"
  mvn -q -f $local_runtime_dir/distribution clean install
  unzip -q -o $local_runtime_dir/distribution/target/apache-camel-k-runtime-${camel_k_runtime_version}-m2.zip -d $camel_k_destination
fi


