#!/bin/bash
# Script for releasing SDK open source software on eureka-partner.
# Usage:
#   release_oss.sh <oss_target_directory>
#
# Output is chromecast_sdk_oss.tgz in <oss_target_directory>.

# Release all source code under ./kernel.
function release_kernel() {
  src=$1/kernel
  dst=$2/kernel
  echo "Copying kernel from $src ==> $dst..."

  mkdir -p ${dst}
  # Clean up source tree.
  pushd ${src} && git clean -dfx && popd

  rsync -av ${src}/ ${dst} --exclude .git
}

# Release source code under ./u-boot
function release_bootloader() {
  src=$1/u-boot
  dst=$2/u-boot
  echo "Copying bootloader from $src ==> $dst..."

  mkdir -p ${dst}
  # Clean up source tree.
  pushd ${src} && git clean -dfx && popd

  rsync -av ${src}/ ${dst} --exclude .git
}

sdk_root=$(readlink -f $(dirname $0)/../../)

if [[ $# != 1 ]]; then
  echo "Usage: $0 OSS_RELEASE_DIR"
  exit 1
fi

oss_root=$(readlink -f $1)
oss_tmp_dir=${oss_root}/chromecast_sdk_oss

if [[ ${oss_root} == ${sdk_root}/* ]]; then
  echo "OSS_RELEASE_DIR can't be sub-dir of sdk_root $sdk_root"
  exit 1
fi

# Clear and create output dir.
rm -rf ${oss_tmp_dir}
mkdir -p ${oss_tmp_dir}

release_kernel ${sdk_root} $oss_tmp_dir

release_bootloader ${sdk_root} ${oss_tmp_dir}

tar zcvf ${oss_root}/chromecast_sdk_oss.tgz -C ${oss_root} chromecast_sdk_oss
rm -rf ${oss_tmp_dir}

echo "Open Source Software has been released to ${oss_root}/chromecast_sdk_oss.tgz".
