#!/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 <