#!/bin/sh -e
#
# Create a MachoPython package from the currently installed verison
# and put it on a disk image
#


VER=3.3b1
BUILD_PACKAGE=0

curDir=`pwd`
progDir="`dirname \"$0\"`"

defDstPath=$curDir
srcPath="$curDir/../../.."

pkgName="MacCvsX"
version=$VER-1
dmgRoot="dmg-root"
pkgRoot="pkg-root"

makePkgExec="./makepkg"
makeDmgExec="./makedmg"

if [ $BUILD_PACKAGE = 1 ]; then
  colDir="$pkgRoot/Applications"
else
  colDir="$dmgRoot"
fi

usage() {
    echo `basename $0`: ERROR: $* 1>&2
    echo usage: `basename $0` '[-d dir]' 1>&2
    exit 1
}

quotemeta() {
    # probably not quite correct, but seems to work
    echo "$1" | sed -e 's/\([^a-zA-z0-9.,--;_/]\)/\\\1/g'
}

msg()
{
    echo "---------------------------------------------"
    echo $@
}

msgdo() {
    echo "--> " $@
    $@
}


user=$1
shift

dstPath=

while :; do
    case "$1" in
	-d) shift; dstPath="$1";;
	-*) usage "bad argument $1";;
	*) break;;
    esac
    shift
done


#-----------------------------------
msg check and prepare build directories

if ! test "$dstPath"; then
    dstPath=$defDstPath
fi
if ! test -d "$dstPath"; then
    msgdo mkdir -p -m 775 "$dstPath"
    msgdo chown ${user}:staff "$dstPath"
fi

temp="tmp$$"
if test -e "$dstPath/$temp"; then
    msgdo rm -rf "$dstPath/$temp"
fi
msgdo mkdir -m 775 "$dstPath/$temp"

if [ $BUILD_PACKAGE = 1 ]; then
  if test -e "$dstPath/$temp/$pkgRoot"; then
      msgdo rm -rf "$dstPath/$temp/$pkgRoot"
  fi
  msgdo mkdir -m 1775 "$dstPath/$temp/$pkgRoot"
  msgdo chown root:admin "$dstPath/$temp/$pkgRoot"
fi

if test -e "$dstPath/$temp/$dmgRoot"; then
    msgdo rm -rf "$dstPath/$temp/$dmgRoot"
fi
msgdo mkdir -p -m 775 "$dstPath/$temp/$dmgRoot"
msgdo chown $user:staff "$dstPath/$temp/$dmgRoot"

#-----------------------------------
msg Copying files to package build dir

msgdo cd $srcPath

msgdo mkdir -p -m 755 $dstPath/$temp/$colDir/MacCvsX-$VER
msgdo cp -pR MacCvs/Build/build/Release/Stripped/MacCvsX.app $dstPath/$temp/$colDir/MacCvsX-$VER/MacCvsX.app
msgdo cp -pR Macros $dstPath/$temp/$colDir/MacCvsX-$VER/
msgdo cp -pR PythonLib $dstPath/$temp/$colDir/MacCvsX-$VER/

for f in AUTHORS COPYING ChangeLog; do
    msgdo cp -pR "$f" "$dstPath/$temp/$colDir/MacCvsX-$VER/$f.txt"
done

cd $curDir

if [ $BUILD_PACKAGE = 0 ]; then
  msgdo cp -pR "$progDir/resourcesMacCvsX"/* "$dstPath/$temp/$dmgRoot/"
fi

msg Removing unnecessary files and folders
msgdo rm -rf `find "$dstPath/$temp/$colDir/" -name CVS`
msgdo rm -rf `find "$dstPath/$temp/$colDir/" -name .DS_Store`
msgdo rm -rf `find "$dstPath/$temp/$colDir/" -name \*.pyc`
msgdo rm -rf `find "$dstPath/$temp/$colDir/" -name .cvsignore`
msgdo rm -rf `find "$dstPath/$temp/$colDir/" -name Makefile.*`


#-----------------------------------

if [ $BUILD_PACKAGE = 1 ]; then
  msg Adjusting ownership and permission
  for d in Applications; do
      msgdo chown -R root:admin "$dstPath/$temp/$pkgRoot/$d"
      msgdo chmod -R g+w "$dstPath/$temp/$pkgRoot/$d"
  done
fi

#-----------------------------------
if [ $BUILD_PACKAGE = 1 ]; then
  msg making installer package
  msgdo cp -pR "$progDir/resourcesMacCvsX" "$dstPath/$temp/"
  msgdo mv "$dstPath/$temp/resourcesMacCvsX" "$dstPath/$temp/resources"
  msgdo cp $progDir/$pkgName.info $progDir/$pkgName-$version.info
  msgdo cd "$progDir"
  msgdo "$makePkgExec" $dstPath/$temp/$pkgRoot $pkgName-$version.info -d $dstPath/$temp/$dmgRoot -r $dstPath/$temp/resources
  msgdo chown -R ${user}:staff $dstPath/$temp/$dmgRoot/$pkgName-$version.pkg
  cd $curDir
fi

#-----------------------------------
msg making disk image
msgdo cd "$progDir"
msgdo "$makeDmgExec" $dstPath/$temp/$dmgRoot $dstPath/$temp $pkgName-$version
dmgName="$pkgName-$version"
msgdo mv "$dstPath/$temp/$pkgName-$version.dmg" "$dstPath/$dmgName.dmg"
msgdo chown ${user}:staff "$dstPath/$dmgName.dmg"
cd $curDir


#-----------------------------------
msg cleaning up
if [ $BUILD_PACKAGE = 1 ]; then
  msgdo rm $progDir/$pkgName-$version.info
fi
msgdo rm -rf "$dstPath/$temp"
