#!/bin/sh

SRC="../src"
DST="."

NAME="Seven Kingdoms"
BDIR="$DST/$NAME.app"
CDIR="$BDIR/Contents"
XDIR="$CDIR/MacOS"
FDIR="$CDIR/Frameworks"
RDIR="$CDIR/Resources"
EXEC="$XDIR/$NAME"

install_dyn_libs()
{
  local FILE="$1"

  otool -L "$FILE" \
  | grep -v '^\S' \
  | grep -v '^\s*\/usr\/' \
  | grep -v '^\s*\/System\/' \
  | sed 's/^[^\/]*\([^ ]*\) (.*$/\1/' \
  | while read LIB; do
      install_dyn_lib "$FILE" "$LIB" || return 1
    done

  return 0
}

install_dyn_lib()
{
  local PARENT="$1"
  local LIB="$2"
  local BN=`basename "$LIB"`
  local DN="$FDIR/$BN"
  local RN="@executable_path/../Frameworks/$BN"

  install_name_tool -change "$LIB" "$RN" "$PARENT" || return 1

  if [ -f "$DN" ]; then
    return 0
  fi

  install -v -m 0644 "$LIB" "$DN" || return 1
  install_name_tool -id "$RN" "$DN" || return 1
  install_dyn_libs "$DN" || return 1

  return 0
}

make_info_plist()
{
  PLIST="$CDIR/Info.plist"
  cat << EOF > "$PLIST"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>CFBundleIconFile</key>
        <string>7kaa.icns</string>
</dict>
</plist>
EOF
  return $?
}

if [ $# -lt 1 ]; then
  echo "Usage: $0 DATA_PATH" >&2
  exit 1
fi

rm -rf "$BDIR" || exit 1
mkdir -p "$XDIR" || exit 1
mkdir -p "$FDIR" || exit 1

make_info_plist || exit 1

cp -Rv "$1" "$RDIR" || exit 1

find "$RDIR" -type d \
| while read DIR; do
    chmod 755 "$DIR" || exit 1
  done

find "$RDIR" -type f \
| while read FILE; do
    chmod 644 "$FILE" || exit 1
  done

install -v "$SRC/client/7kaa" "$EXEC" || exit 1
install_dyn_libs "$EXEC" || exit 1
