#!/usr/bin/env 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.

# Redirect output to stderr.
exec 1>&2

#set -o xtrace
set -o errexit
set -o pipefail
set -o nounset

bin="$(cd "$(dirname "$0")" > /dev/null; pwd)"

_main() {
  # In case the usage happens at a different layer, make sure to cd to the toplevel
  local root_dir
  root_dir="$(git rev-parse --show-toplevel)"
  cd "$root_dir"

  if ! git ls-files --error-unmatch .gitmodules &>/dev/null; then
    # nothing to see here, look away!
    return 0
  fi

  local extra_args=""
  if [[ -n "${BUILD_OFFLINE:-}" ]]; then
    echo "BUILD_OFFLINE is defined; using --no-fetch for submodule updates (local SHAs only)."
    echo "If your submodules are not already available locally, expect this to error out."
    extra_args="--no-fetch"
  fi
  git submodule update --init --recursive ${extra_args:-}
}

_main "$@"
