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

### configure jiri to manage a specific fuchsia layer cake

## usage: fx set-layer garnet|peridot|topaz
## Configures jiri to fetch the source code for the given layer and its
## dependencies.

set -e

source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/vars.sh

if [[ "$#" -ne 1 ]]; then
  fx-command-help
fi

layer="$1"

if [[ "${layer}" == "zircon" ]]; then
  fx-command-help
  echo >&2 "error: Switching to the Zircon layer is not supported."
  exit 1
fi

if [[ "${layer}" != "garnet" ]] &&
   [[ "${layer}" != "peridot" ]] &&
   [[ "${layer}" != "topaz" ]]; then
  fx-command-help
  exit 1
fi

# If jiri is not found which will return an err which will cause bash to exit.
# "|| echo" catches that.
jiri=$(which jiri || echo)
if [[ -z ${jiri} ]]; then
  jiri="${FUCHSIA_DIR}/.jiri_root/bin/jiri"
  if [[ ! -f ${jiri} ]]; then
    echo >&2 "error: Cannot find \"jiri\" in your PATH nor at ${jiri}."
    exit 1
  fi
fi

cd "${FUCHSIA_DIR}"

function remove-import {
  local -r name=$1
  local -r manifest=$2
  ${jiri} -q import -delete=true -name="${name}" "${manifest}"
}

remove-import zircon manifest
remove-import garnet manifest/garnet
remove-import peridot manifest/peridot
remove-import topaz manifest/topaz

# TODO(abarth): Remove this step eventually once everyone has had a change to
# remove this import from their manifest.
remove-import manifest fuchsia

${jiri} import -name="${layer}" "manifest/${layer}" "https://fuchsia.googlesource.com/${layer}"

  cat <<END
Configured jiri for ${layer}. Run these commands to update your build:

 * jiri update -gc     # Updates your source tree to contain ${layer} and
                       # removes unneeded repositories.
 * fx set x86-64       # Updates your build directory to build ${layer}.
 * fx full-build       # Actually builds ${layer}.
END
