#!/bin/sh
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Create a read-only disk image of the contents of a folder
#
# Usage: make-diskimage <image_file>
#                       <src_folder>
#                       <volume_name>
#                       <eula_resource_file>
#                       <.dsstore_file>
#                       <background_image_file>
#
# tip: use '-null-' for <eula-resource-file> if you only want to
# provide <.dsstore_file> and <background_image_file>

DMG_PATH=$1
SRC_FOLDER=$2
VOLUME_NAME=$3

# optional arguments
EULA_RSRC=$4
DMG_DSSTORE=$5
DMG_BKGND_IMG=$6

EXTRA_ARGS=

if test -n "$EULA_RSRC" && test "$EULA_RSRC" != "-null-" ; then
  EXTRA_ARGS="--resource $EULA_RSRC"
fi

if test -n "$DMG_DSSTORE" ; then
  EXTRA_ARGS="$EXTRA_ARGS --copy $DMG_DSSTORE:/.DS_Store"
fi

if test -n "$DMG_BKGND_IMG" ; then
  EXTRA_ARGS="$EXTRA_ARGS --mkdir /.background --copy $DMG_BKGND_IMG:/.background"
fi

echo `dirname $0`/pkg-dmg --target "$DMG_PATH" --source "$SRC_FOLDER" \
 --volname "$VOLUME_NAME" $EXTRA_ARGS

`dirname $0`/pkg-dmg --target "$DMG_PATH" --source "$SRC_FOLDER" \
 --volname "$VOLUME_NAME" $EXTRA_ARGS

exit $?
