#!/bin/bash

# Copyright 2015 Google Inc. All rights reserved.
#
# Licensed 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.

set -e

if [[ "$(uname)" != Darwin ]]; then
  echo "Cannot run iOS targets on a non-mac machine."
  exit 1
fi

# Note: SDK_VERSION and SIM_DEVICE might contain spaces, but they are already
# provided in quoted form in the template variables, so we should not quote them
# again here.
readonly SDK_VERSION=%sdk_version%
readonly SIM_DEVICE=%sim_device%
readonly APP_DIR=$(mktemp -d -t extracted_app)

args=()
# Pass environment variables prefixed with IOS_ to the simulator, stripping
# the prefix.
while read -r envvar; do
  if [[ "${envvar}" == IOS_* ]]; then
    args+=(-e "${envvar#IOS_}")
  fi
done < <(env)

unzip -qq '%ipa_file%' -d "${APP_DIR}"
%iossim% -d "${SIM_DEVICE}" -s "${SDK_VERSION}" \
    "${args[@]}" \
    "${APP_DIR}/Payload/%app_name%.app" \
    "$@"
