#!/bin/bash
# プライベートリポジトリから指定のファイルをダウンロードする
# by Nobuo Okazaki
#
# 指定したリポジトリ/ブランチの最新版ファイルをダウンロードする
# 環境変数GITHUB_TOKENにAPIトークンをセットすること
#
# 使い方
# % ./spec-get mlfcomp/Utsusemi 0.3.7 contrib/rpm/utsusemi.spec 出力ディレクトリ
#
# History:
#   2019-01-12: 初期リリース
#   2019-01-18: 出力先およびエラーメッセージを追加
REPO=$1
BRANCH=$2
TARGET=$3
OUTDIR=${4:-.}
FILENAME=$(basename ${TARGET})

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

TOKEN=$GITHUB_TOKEN
if [ -z "$TOKEN" ]; then
  echo "GitHub API token does not set."
  echo "Set API token to environment variable named GITHUB_TOKEN"
  exit 1
fi

echo "Download $TARGET > $FILENAME" > /dev/stderr
curl -s -H "Authorization: token $TOKEN" -L "https://api.github.com/repos/${REPO}/contents/${TARGET}?ref=${BRANCH}" | jq -r .content | base64 -d > $OUTDIR/$FILENAME

