#!/usr/bin/env bash set -e VOLUME_PATH=/Volumes/installer while getopts ":d:h" opts; do case $opts in d) VOLUME_PATH=$OPTARG ;; h) echo "Usage: $0 [-h] [-d disk] name" echo "name is either mojave, mojave_beta, or catalina_beta" echo " -h Show this help message" echo " -d /Volumes path to where it makes a bootable disk." echo " If it doesn't exist, it will create a disk image." exit 0 ;; esac done readonly VOLUME_PATH shift $((OPTIND - 1)) readonly NAME=$1 if [[ $(dirname "$VOLUME_PATH") != "/Volumes" ]]; then echo "Invalid volume path '$VOLUME_PATH'" >&2 exit 1 fi case $NAME in mojave) INSTALL_APP_PATH="/Applications/Install macOS Mojave.app" MAC_APP_STORE_ID="id1398502828" ;; mojave_beta) INSTALL_APP_PATH="/Applications/Install macOS Mojave Beta.app" MAC_APP_STORE_ID="id1354523149" REQUIRE_ENROLL=1 ;; catalina) INSTALL_APP_PATH="/Applications/Install macOS Catalina.app" MAC_APP_STORE_ID="id1466841314" ;; catalina_beta) INSTALL_APP_PATH="/Applications/Install macOS Catalina Beta.app" MAC_APP_STORE_ID="id1455661060" REQUIRE_ENROLL=1 ;; *) echo "Unknown name '$NAME'. See usage by give -h." >&2 exit 1 ;; esac readonly INSTALL_APP_PATH readonly MAC_APP_STORE_ID readonly REQUIRE_ENROLL if [[ -r "$INSTALL_APP_PATH/Contents/SharedSupport/InstallESD.dmg" ]]; then echo "Found the install app, create an install disk." if [[ ! -e $VOLUME_PATH ]]; then readonly DISK_IMAGE_NAME=$(basename "$VOLUME_PATH") echo "Creating a disk image '$DISK_IMAGE_NAME'" # Mojave, Catalina install disk image requires about 7GB space. hdiutil create -o "$DISK_IMAGE_NAME.dmg" -volname "$DISK_IMAGE_NAME" -size 7G -layout SPUD -fs HFS+J && \ hdiutil attach "$DISK_IMAGE_NAME.dmg" fi # Create an install disk. sudo "$INSTALL_APP_PATH/Contents/Resources/createinstallmedia" \ --volume "$VOLUME_PATH" \ --downloadassets else if ((REQUIRE_ENROLL)); then echo "Enroll developer seed and open Mac App Store." echo "You can unenroll after downloading the install app by next command:" echo "sudo /System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil unenroll" # Tell Mac App Store that we've enrolled `DeveloperSeed`. # Actual `enroll` is needed to download a complete install image from Mac App Store. sudo /System/Library/PrivateFrameworks/Seeding.framework/Versions/A/Resources/seedutil enroll DeveloperSeed /usr/libexec/PlistBuddy -c "clear dict" -c "add :SeedProgram string DeveloperSeed" /Users/Shared/.SeedEnrollment.plist fi # Open Mac App Store to download macOS installer app. /usr/bin/open "macappstores://itunes.apple.com/app/$MAC_APP_STORE_ID" echo "Click Get on Mac App Store to download installer app, then run this script again to create an install disk image." fi