#!/bin/bash

port=swi-prolog-devel
portprefix=/opt/local
branch=master

done=false
while [ $done = false ]; do
  case "$1" in
    --branch=*)	branch=$(echo $1 | sed 's/^[^=]*=//')
       shift
       ;;
    *) done=true
       ;;
  esac
done



if [ -x $portprefix/bin/gsed ]; then
  sed=$portprefix/bin/gsed
else
  sed=sed
fi

portgit=$HOME/src/macports-ports/
portfile=lang/$port/Portfile
version=$(cat VERSION)
file=../swipl-$version.tar.gz

if [ ! -r $file ]; then
  echo "ERROR: Could not find distfile $file"
  exit 1
fi

size=$(wc -c < $file | xargs)
sha256=$(openssl sha256 < $file | cut -d ' ' -f 2)
rmd160=$(openssl rmd160 -provider legacy < $file | cut -d ' ' -f 2)

if [ -d $portprefix/var/macports/distfiles ]; then
  cp $file $portprefix/var/macports/distfiles/swi-prolog || exit 1
fi

echo "version: $version"
echo "size:    $size"
echo "sha256:  $sha256"
echo "rmd160:  $rmd160"

cbranch=$(git -C $portgit rev-parse --abbrev-ref HEAD)
if [ ! $branch = master -a $cbranch = $branch ]; then
  echo "Keeping branch $branch"
else
  git -C $portgit checkout $branch
  if [ $branch = master ]; then
    echo "Pulling $branch"
    git -C $portgit pull
  fi
  git -C $portgit branch -D $version >/dev/null 2>&1  || true
  git -C $portgit checkout -b $version
fi

$sed -i \
     -e "s/^\(version\s*\)[0-9].*/\1$version/" \
     -e "s/^\(revision\s*\)[0-9].*/\10/" \
     -e "s/^\(checksums\s*rmd160\s*\)[0-9a-f].*/\1$rmd160 \\\\/" \
     -e "s/^\(\s*sha256\s*\)[0-9a-f].*/\1$sha256 \\\\/" \
     -e "s/^\(\s*size\s*\)[0-9a-f].*/\1$size/" \
     $portgit/$portfile

git -C $portgit commit $portfile -m "$port: Updated to version $version"