#!/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 ./bootloader
function release_bootloader() {
  src=$1/bootloader
  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".
