#!/bin/bash
# ---------------------------------------------------------
# Customizable Settings
# ---------------------------------------------------------
MOUNT_POINT="${CASE_SAFE_MOUNT_POINT:-${HOME}/casesafe}"
VOLUME_PATH="${CASE_SAFE_VOLUME_PATH:-${HOME}/.casesafe.dmg.sparseimage}"
VOLUME_NAME="${CASE_SAFE_VOLUME_NAME:-casesafe}"
VOLUME_SIZE="${CASE_SAFE_VOLUME_SIZE:-60g}"
# ---------------------------------------------------------
# Functionality
# ---------------------------------------------------------
create() {
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size ${VOLUME_SIZE} -volname ${VOLUME_NAME} ${VOLUME_PATH}
}
automount() {
attach
cat << EOF > "/tmp/com.${VOLUME_NAME}.plist"
RunAtLoad
Label
com.${VOLUME_NAME}
ProgramArguments
hdiutil
attach
-notremovable
-nobrowse
-mountpoint
${MOUNT_POINT}
${VOLUME_PATH}
EOF
sudo cp "/tmp/com.${VOLUME_NAME}.plist" "/Library/LaunchDaemons/com.${VOLUME_NAME}.plist"
rm "/tmp/com.${VOLUME_NAME}.plist"
}
noautomount() {
detach
sudo rm -f "/Library/LaunchDaemons/com.${VOLUME_NAME}.plist"
}
detach() {
m=$(hdiutil info | grep "${MOUNT_POINT}" | cut -f1)
if [ ! -z "$m" ]; then
sudo hdiutil detach $m
fi
}
attach() {
sudo hdiutil attach -notremovable -nobrowse -mountpoint ${MOUNT_POINT} ${VOLUME_PATH}
}
resize() {
compact
detach
hdiutil resize -size ${VOLUME_SIZE} ${VOLUME_PATH}
attach
}
compact() {
detach
hdiutil compact ${VOLUME_PATH} -batteryallowed
attach
}
help() {
cat <
Possible commands:
create Initialize case-sensitive volume (only needed first time)
automount Configure macOS to mount the volume automatically on restart
noautomount Stop macOS from mounting the volume automatically on restart
mount Attach the case-sensitive volume
unmount Detach the case-sensitive volume
resize Resize the case-sensitive volume
compact Remove any uneeded reserved space in the volume
config Show current configuration and instructions on changing
help Display this message
EOF
}
config() {
cat <