#!/bin/bash
# Copyright (C) 2018 The Android Open Source Project
#
# 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.

UI_DIR="$(cd -P ${BASH_SOURCE[0]%/*}; pwd)"
ROOT_DIR=$(dirname "$UI_DIR")
NODE=$ROOT_DIR/buildtools/nodejs/bin/node
LITE="$UI_DIR/node_modules/.bin/lite-server"

if [ ! -f "$LITE" ]; then
  echo "ERROR: cannot find lite-server. You need to run:"
  echo "  tools/install-build-deps --ui"
  echo "  ninja -C out/xxx ui"
  exit 127
fi
if [ -z "$1" ]; then
  echo "ERROR: no output directory specified."
  echo "Usage: $0 out/mac_debug"
  exit 127
fi
OUT_DIR="$1"
UI_OUT_DIR="$OUT_DIR/ui"
if [ ! -d $OUT_DIR ]; then
  echo "ERROR: cannot find the output directory (\"$OUT_DIR\")"
  echo "Did you run ninja?"
  exit 127
fi
if [ ! -d $UI_OUT_DIR ]; then
  echo "ERROR: cannot find the UI output directory (\"$UI_OUT_DIR\")."
  echo "Did you run ninja ui?"
  exit 127
fi

OUT_DIR="$OUT_DIR" ROOT_DIR="$ROOT_DIR" $NODE $LITE -c $UI_DIR/bs-config.js

