#!/bin/bash
# プライベートリポジトリからtar.gzをダウンロードする
# by Nobuo Okazaki
#
# 指定したリポジトリ/ブランチの最新版をtar.gzでダウンロードする
# 環境変数GITHUB_TOKENにAPIトークンをセットすること
#
# 使い方
# % ./archive-get mlfcomp/Utsusemi 0.3.7 出力先
#
# <パッケージ名>-<ブランチ名>.<最終更新日>git<コミットの8桁>.tar.gz ファイルが生成される
#
# History:
#   2019-01-12: 初期リリース
#   2019-01-18: OUTDIRを追加
REPO=$1
BRANCH=$2
OUTDIR=${3:-.}

if [ -z "$REPO" -o -z "$BRANCH" ]; then
  echo "Usage: $0 REPONAME BRANCH OUTDIR"
  echo "example: $0 mlfcomp/Utsusemi 0.3.7 ."
  exit 1
fi

TOKEN=$GITHUB_TOKEN
if [ -z "$TOKEN" ]; then
  echo "GITHUB_TOKEN must be set."
  exit 1
fi

META=$(curl --silent https://${TOKEN}@api.github.com/repos/${REPO}/branches/${BRANCH})
RELDATE=$(date --date "$(echo $META | jq -r .commit.commit.author.date)" +%y%m%d)
SHA=$(echo $META | jq -r .commit.sha | cut -b1-8 -)
PKG=$(echo $REPO | cut -d/ -f2 -)
OUTFILE=${OUTDIR}/${PKG}-${BRANCH}.${RELDATE}git${SHA}.tar.gz
if [ -f "$OUTFILE" ]; then
  echo "Archive exists: ${OUTFILE} ... Skip" > /dev/stderr
else
  echo "Download ${BRANCH}@${SHA}..." > /dev/stderr
  curl -s -H "Authorization: token $TOKEN" -L "https://api.github.com/repos/${REPO}/tarball/${BRANCH}" > ${OUTFILE}
  echo "Done." > /dev/stderr
fi

