blob: 500334bd0d6dac3428408b5949ef2ac40db3beaf [file] [log] [blame]
#!/bin/sh
#
FOLDER="$1"
if [ -z "$FOLDER" ]; then
echo
echo "usage: $0 <folder>"
echo
exit 1
fi
if [ ! -d "$FOLDER" ]; then
echo $FOLDER does not exist
exit 2
fi
SIZE=`du -s "$FOLDER" | awk '{ print $1 }'`
# allow space for partition map and directory structure
SIZE=`echo 1024 + $SIZE \* 1.1 / 1 | bc`
NAME=`basename "$FOLDER"`
FILE=$NAME.dmg
TMP=${TMP:-/tmp}
if [ $SIZE -lt 9216 ]; then
SIZE=9216
fi
if [ -e "$FILE" ] ; then
echo $FILE already exists!
exit 3
fi
TMPFILE=$TMP/$$.dmg
echo Creating $TMPFILE from $FOLDER, $SIZE sectors...
hdiutil create $TMPFILE -sectors $SIZE -ov
if [ $? -ne 0 ] ; then
rm -f $TMPFILE
exit 4
fi
echo
DEVICES=`hdid -nomount $TMPFILE`
DEVMASTER=`echo $DEVICES| awk '{ print $1 }'`
# Different results on 10.4 vs 10.5. Yay! [fry]
#echo "devices as follows"
#echo $DEVICES
DARWINVERSION=`uname -r`
if [ $DARWINVERSION = "9.5.0" ] ; then
DEVHFS=`echo $DEVICES| awk '{ print $3 }'`
else
if [ $DARWINVERSION = "8.11.1" ] ; then
DEVHFS=`echo $DEVICES| awk '{ print $5 }'`
else
echo "This version of OS X not recognized."
exit;
fi
fi
echo Creating HFS partition $NAME on $TMPFILE at $DEVHFS
newfs_hfs -v "$NAME" $DEVHFS
if [ $? -ne 0 ] ; then
rm -f $TMPFILE
exit 5
fi
hdiutil eject $DEVMASTER
if [ $? -ne 0 ] ; then
rm -f $TMPFILE
exit 6
fi
DEVICES=`hdid $TMPFILE`
if [ $? -ne 0 ] ; then
rm -f $TMPFILE
exit 7
fi
# These two lines removed when doing the 10.4 and 10.5 split above.
# They seem to be duplicates, so just rely on the earlier logic. [fry]
#DEVMASTER=`echo $DEVICES| awk '{ print $1 }'`
#DEVHFS=`echo $DEVICES| awk '{ print $5 }'`
echo Copying $FOLDER to /Volumes/$NAME on $DEVMASTER
#sudo ditto -rsrcFork "$FOLDER" "/Volumes/$NAME"
ditto -rsrcFork "$FOLDER" "/Volumes/$NAME"
if [ $? -ne 0 ]; then
hdiutil eject $DEVMASTER
rm -f $TMPFILE
exit 8
fi
hdiutil eject $DEVMASTER
if [ $? -ne 0 ]; then
#rm -f $TMPFILE
exit 9
fi
echo "Compressing $NAME to $FILE"
#hdiutil convert $TMPFILE -format UDZO -o "$FILE"
hdiutil convert $TMPFILE -format UDZO -imagekey zlib-level=9 -o "$FILE"
if [ $? -ne 0 ]; then
rm -f "$FILE" $TMPFILE
exit 10
fi
rm -f $TMPFILE
# end