#!/bin/bash
set -e

if [ $# -ne 3 ]; then
	echo "Error: Wrong number of arguments."
	echo ""
	echo "Usage: create_bundle bundle_name \"author_name\" author_email"
	exit 1
fi

BUNDLES_PATH="${HOME}/Library/Application Support/MailMate/Bundles"

mkdir -p "${BUNDLES_PATH}"
cd "${BUNDLES_PATH}"

BUNDLE_NAME="$1"
BUNDLE_PATH="${BUNDLE_NAME}.mmBundle"

if [ -d "${BUNDLE_PATH}" ]; then
	echo "Error: Bundle already exists."
	exit 1
fi

mkdir "${BUNDLE_PATH}"
mkdir "${BUNDLE_PATH}/Commands"
mkdir "${BUNDLE_PATH}/Support"
mkdir "${BUNDLE_PATH}/Support/bin"

BUNDLE_UUID=`uuidgen | tr -d "\n"`
NAME="$2"
EMAIL_ROT13=`printf "$3" | tr '[A-Za-z]' '[N-ZA-Mn-za-m]'`

cat >> "${BUNDLE_PATH}/info.plist" << ENDL
{	"contactEmailRot13" = "${EMAIL_ROT13}";
	contactName = "${NAME}";
	description = "...";
	name = "${BUNDLE_NAME}";
	uuid = "${BUNDLE_UUID}";
}
ENDL

COMMAND_UUID=`uuidgen | tr -d "\n"`
cat >> "${BUNDLE_PATH}/Commands/Example Command.mmCommand" << ENDL
{	name = "Example Command";
	uuid = "${COMMAND_UUID}";
	// environment = "MM_FROM_NAME=\${from.name:\${from.address}}\n"; // Setup 1 or more environment variables using a format string. 
	input = "canonical"; // Options are: none, raw, decoded, canonical, html, selection, formatted
	// output = "actions"; // Options are: discard, actions
	// executionMode = "singleMessage"; // Options are: noMessages, singleMessage, multipleMessages
	script = "#!/bin/bash\n${MM_BUNDLE_SUPPORT}/bin/helper";
	// keyEquivalent = "^o"; // Keyboard shortcut
	// conditions = "list-id exists"; // Can be used to ensure that a command only applies to certain types of messages.
	// Other options are formatString, separatorString, suffixString, filesPattern, saveForEditing, ...
}
ENDL
