#!/bin/bash
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

set -v -e -x

# Usage: update-jsoncpp.sh <path to jsoncpp git clone> [rev, defaults to HEAD]

if [ $# -lt 1 ]; then
  echo "Usage: update-jsoncpp.sh /path/to/jsoncpp/src [rev]"
  exit 1
fi

crashreporter_dir=$(realpath $(dirname $0))
repo=${crashreporter_dir}/../..
rm -rf ${crashreporter_dir}/jsoncpp

jsoncpp_repo=$1
rev=${2-HEAD}
(cd $jsoncpp_repo; git archive --prefix=toolkit/crashreporter/jsoncpp/ $rev) | (cd $repo; tar xf -)

# remove some extraneous bits
rm -rf \
  ${crashreporter_dir}/jsoncpp/.clang-format \
  ${crashreporter_dir}/jsoncpp/.gitattributes \
  ${crashreporter_dir}/jsoncpp/.gitignore \
  ${crashreporter_dir}/jsoncpp/.travis.yml \
  ${crashreporter_dir}/jsoncpp/CMakeLists.txt \
  ${crashreporter_dir}/jsoncpp/SConstruct \
  ${crashreporter_dir}/jsoncpp/amalgamate.py \
  ${crashreporter_dir}/jsoncpp/appveyor.yml \
  ${crashreporter_dir}/jsoncpp/dev.makefile \
  ${crashreporter_dir}/jsoncpp/devtools \
  ${crashreporter_dir}/jsoncpp/doc \
  ${crashreporter_dir}/jsoncpp/doxybuild.py \
  ${crashreporter_dir}/jsoncpp/include/CMakeLists.txt \
  ${crashreporter_dir}/jsoncpp/makefiles \
  ${crashreporter_dir}/jsoncpp/makerelease.py \
  ${crashreporter_dir}/jsoncpp/pkg-config \
  ${crashreporter_dir}/jsoncpp/scons-tools \
  ${crashreporter_dir}/jsoncpp/src/CMakeLists.txt \
  ${crashreporter_dir}/jsoncpp/src/jsontestrunner \
  ${crashreporter_dir}/jsoncpp/src/lib_json/CMakeLists.txt \
  ${crashreporter_dir}/jsoncpp/src/lib_json/sconscript \
  ${crashreporter_dir}/jsoncpp/src/lib_json/version.h.in \
  ${crashreporter_dir}/jsoncpp/src/test_lib_json \
  ${crashreporter_dir}/jsoncpp/test \
  ${crashreporter_dir}/jsoncpp/travis.sh \
  ${crashreporter_dir}/jsoncpp/version \
  ${crashreporter_dir}/jsoncpp/version.in

# restore our moz.build files
hg -R ${repo} st -n | grep "moz\.build$" | xargs hg revert --no-backup

# Record git rev
(cd $jsoncpp_repo; git rev-parse $rev) > ${crashreporter_dir}/jsoncpp/GIT-INFO

# remove any .orig files that snuck in
find ${crashreporter_dir}/jsoncpp -name "*.orig" -exec rm '{}' \;

hg addremove ${crashreporter_dir}/jsoncpp/