feat: restore state/resume/report + single Spotlight index after mas installs
lib/brew.sh:
Set MAS_NO_AUTO_INDEX=1 before brew bundle install to suppress the
per-app mdimport call that mas otherwise runs after each App Store
installation. Run one mdimport /Applications batch pass afterwards.
lib/restore-state.sh (new):
Lightweight key=value state file (~/.local/state/ssr/restore-state).
ssr::rs::init / ssr::rs::run / ssr::rs::set/get / ssr::rs::error /
ssr::rs::report — tracks step outcomes and accumulated errors.
bin/ssr-restore:
--resume flag: skip steps already marked ok in state file.
Each step (brew_install, brew_restore, mackup_restore, macos_defaults,
prefs_import) wrapped in ssr::rs::run; errors accumulate without abort.
Formatted report printed at end of every run.
bin/ssr-status:
ssr status restore — full restore step report + error log
ssr status backup — Brewfile lines, unmanaged apps, prefs snapshot
ssr status — general view now shows one-line last-restore
summary and hint to run 'ssr status restore'
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+11
-5
@@ -66,12 +66,18 @@ ssr::brew::restore() {
|
||||
local brewfile="$1"
|
||||
[[ -f "$brewfile" ]] || ssr::die "Brewfile not found: $brewfile"
|
||||
ssr::log "brew bundle install ← $brewfile"
|
||||
# brew bundle exits non-zero when individual packages fail (network errors,
|
||||
# missing tap, cask version mismatch, etc.). We soft-fail here so the rest
|
||||
# of ssr restore (mackup, defaults, prefs) still runs. The user can rerun
|
||||
# `brew bundle install --file="$brewfile"` manually for failed entries.
|
||||
|
||||
# Suppress per-app Spotlight indexing: mas would otherwise run mdimport
|
||||
# after every single App Store installation, which adds minutes of latency
|
||||
# spread across the run. We do one batch mdimport after bundle completes.
|
||||
local rc=0
|
||||
brew bundle install --file="$brewfile" --verbose || rc=$?
|
||||
MAS_NO_AUTO_INDEX=1 brew bundle install --file="$brewfile" --verbose || rc=$?
|
||||
|
||||
# Single batch Spotlight index of /Applications after all installs.
|
||||
ssr::log "Indexing /Applications in Spotlight (one-time batch after all installs)"
|
||||
mdimport /Applications 2>/dev/null || true
|
||||
[[ -d "$HOME/Applications" ]] && mdimport "$HOME/Applications" 2>/dev/null || true
|
||||
|
||||
if [[ $rc -ne 0 ]]; then
|
||||
ssr::warn "brew bundle install finished with errors (rc=$rc) — some packages were not installed."
|
||||
ssr::warn "Rerun manually: brew bundle install --file=\"$brewfile\""
|
||||
|
||||
Reference in New Issue
Block a user