#!/bin/sh DMG=$1 EXTRACT_DIR=$2 set -ex; function cleanup() { hdiutil detach ${DEV_NAME} || { sleep 5 && hdiutil detach ${DEV_NAME} -force; }; return $1 && $?; }; export PAGER=true; echo Y | hdiutil attach -readonly -mountroot /tmp -private -noautoopen "$DMG" > "$EXTRACT_DIR/hdi.output"; DEV_NAME=`perl -n -e 'if ($_ =~ m|(/dev/disk[^ ]*)|) { print $1."\n"; exit; }' < "$EXTRACT_DIR/hdi.output"` MOUNTPOINT=`perl -n -e 'split(m|/dev/disk[^ ]*|, $_, 2); if ($_[1] =~ m|(/.*)|) { print $1."\n"; exit; }' < "$EXTRACT_DIR/hdi.output"` || cleanup 1; mkdir "$EXTRACT_DIR/mount" rsync -a "$MOUNTPOINT/Firefox.app" "$EXTRACT_DIR/mount" || cleanup 1 rsync -a "$MOUNTPOINT/.DS_Store" "$EXTRACT_DIR" || cleanup 1 rsync -a "$MOUNTPOINT/.background/background.png" "$EXTRACT_DIR" || cleanup 1 rsync -a "$MOUNTPOINT/.VolumeIcon.icns" "$EXTRACT_DIR" || cleanup 1 cleanup 0 cp "$DMG" "$EXTRACT_DIR/firefox.tmp.dmg" hdiutil unflatten "$EXTRACT_DIR/firefox.tmp.dmg" /Developer/Tools/DeRez -skip plst -skip blkx "$EXTRACT_DIR/firefox.tmp.dmg" > "$EXTRACT_DIR/license.r" rm -f "$EXTRACT_DIR/firefox.tmp.dmg"