#!/bin/sh set -eu APP_NAME="Notchly.app" APP_LABEL="Notchly" APP_EXECUTABLE_RELATIVE_PATH="Contents/MacOS/Notchly" ASSET_URL="https://notchly.vercel.app/download/latest" TMP_DIR="$(mktemp -d /tmp/notchly-install.XXXXXX)" ASSET_PATH="$TMP_DIR/Notchly.download" MOUNT_POINT="" INSTALL_DIR="" APP_TARGET="" APP_SOURCE="" cleanup() { if [ -n "$MOUNT_POINT" ]; then hdiutil detach "$MOUNT_POINT" -quiet >/dev/null 2>&1 || true fi rm -rf "$TMP_DIR" } trap cleanup EXIT INT TERM printf "\nInstalling %s...\n" "$APP_LABEL" printf "Downloading the latest build...\n" curl -fsSL "$ASSET_URL" -o "$ASSET_PATH" if hdiutil imageinfo "$ASSET_PATH" >/dev/null 2>&1; then printf "Mounting installer...\n" MOUNT_POINT="$(hdiutil attach "$ASSET_PATH" -nobrowse 2>/dev/null | awk 'index($0, "/Volumes/") {for (i = 3; i <= NF; i++) printf "%s%s", $i, i == NF ? ORS : OFS} END {if (NR == 0) exit 1}')" APP_SOURCE="$MOUNT_POINT/$APP_NAME" else printf "Extracting installer archive...\n" unzip -q "$ASSET_PATH" -d "$TMP_DIR/unpacked" _exe_rel="/$APP_EXECUTABLE_RELATIVE_PATH" APP_SOURCE="$(find "$TMP_DIR/unpacked" -type f -path "*/$APP_EXECUTABLE_RELATIVE_PATH" ! -path "*/__MACOSX/*" | head -n 1)" APP_SOURCE="${APP_SOURCE%$_exe_rel}" fi if [ -z "$APP_SOURCE" ] || [ ! -d "$APP_SOURCE" ]; then printf "Failed to find %s inside downloaded installer archive.\n" "$APP_NAME" >&2 exit 1 fi if pgrep -x "$APP_LABEL" >/dev/null 2>&1; then osascript -e 'tell application "Notchly" to quit' >/dev/null 2>&1 || true sleep 1 fi if [ -w "/Applications" ]; then INSTALL_DIR="/Applications" else INSTALL_DIR="$HOME/Applications" mkdir -p "$INSTALL_DIR" fi APP_TARGET="$INSTALL_DIR/$APP_NAME" printf "Copying %s to %s...\n" "$APP_LABEL" "$INSTALL_DIR" rm -rf "$APP_TARGET" ditto "$APP_SOURCE" "$APP_TARGET" xattr -dr com.apple.quarantine "$APP_TARGET" >/dev/null 2>&1 || true if [ ! -x "$APP_TARGET/$APP_EXECUTABLE_RELATIVE_PATH" ]; then printf "Installed %s is missing its executable at %s.\n" "$APP_LABEL" "$APP_TARGET/$APP_EXECUTABLE_RELATIVE_PATH" >&2 exit 1 fi open "$APP_TARGET" printf "\n%s is installed at %s and opening now.\n" "$APP_LABEL" "$APP_TARGET"