add macOS uninstall script (#276)

Co-authored-by: Abhisek Datta <abhisek.datta@gmail.com>
This commit is contained in:
Sahil Bansal
2026-05-21 11:49:28 +05:30
committed by GitHub
co-authored by Abhisek Datta
parent 9b0e12f130
commit 875cda2e43
+56
View File
@@ -0,0 +1,56 @@
#!/bin/bash
# pmg_uninstall_macos.sh — Uninstall PMG, remove config, aliases, shims, and cloud credentials.
#
# This script is intended to be deployed via Jamf or similar MDM tools.
#
# Usage:
# ./pmg_uninstall_macos.sh
#
# What it does:
# 1. Removes PMG config, shell aliases, and PATH shims
# 2. Clears cloud credentials from macOS Keychain
# 3. Uninstalls the pmg binary (via Homebrew or direct removal)
set -euo pipefail
if [[ "$(uname -s)" != "Darwin" ]]; then
echo "Error: this script is for macOS only" >&2
exit 1
fi
log() { echo "==> $*"; }
# ── Remove config, aliases, and shims ────────────────────────────────────────
if command -v pmg &>/dev/null; then
log "Removing PMG config, aliases, and shims"
pmg setup remove --config-file || true
log "Clearing cloud credentials from keychain"
pmg cloud logout || true
fi
# ── Uninstall pmg binary ────────────────────────────────────────────────────
BREW_BIN=""
for candidate in "/opt/homebrew/bin/brew" "/usr/local/bin/brew"; do
if [[ -x "$candidate" ]]; then
BREW_BIN="$candidate"
break
fi
done
if [[ -n "$BREW_BIN" ]] && "$BREW_BIN" ls --versions safedep/tap/pmg &>/dev/null; then
log "Uninstalling pmg via Homebrew"
"$BREW_BIN" uninstall safedep/tap/pmg
else
log "Removing pmg binary"
if [[ -f "/usr/local/bin/pmg" ]]; then
if [[ -w "/usr/local/bin/pmg" ]]; then
rm -f "/usr/local/bin/pmg"
else
sudo rm -f "/usr/local/bin/pmg"
fi
fi
fi
# ── Done ─────────────────────────────────────────────────────────────────────
log "pmg uninstall complete!"