Initial ssr repository
Convert the legacy system_sync.sh and system_restore.sh into a modular shareable repository: - bin/ssr CLI dispatcher with install/sync/restore/schedule/config/status - lib/ split: common, cloud, brew, mackup, macos - Cloud provider abstraction (icloud, dropbox, googledrive, onedrive, custom) - launchd template for scheduled daily sync (renderable via sed) - ssr.conf.example with whitelisted KEY=VALUE config loader - macos-defaults.sh extracted from inline block, overridable - install.sh bootstrap symlinks CLI into ~/.local/bin - README with usage, config table, migration map, security notes - Original scripts archived under legacy/ for reference Fixes vs originals: set -euo pipefail, quoted vars, find -print0, spctl --global-disable (was --master-disable), MACOS=".macos" bug, zero-width char before ln, Apple Silicon brew shellenv, config injection hardening. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
# lib/mackup.sh — Mackup install + backup/restore.
|
||||
# Note: upstream mackup is in low-maintenance mode; we keep it because it
|
||||
# remains the simplest way to sync dotfiles for a wide range of apps. The
|
||||
# user can swap engines via ~/.mackup.cfg without changing this script.
|
||||
|
||||
ssr::mackup::ensure_installed() {
|
||||
if command -v mackup >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
ssr::log "Installing mackup via brew"
|
||||
brew install mackup
|
||||
}
|
||||
|
||||
# Writes ~/.mackup.cfg pointing the engine at the cloud directory.
|
||||
# Idempotent: rewrites only if content differs.
|
||||
ssr::mackup::configure() {
|
||||
local mackup_dir="$1"
|
||||
local cfg="$HOME/.mackup.cfg"
|
||||
local desired
|
||||
desired="$(printf '[storage]\nengine = file_system\npath = %s\ndirectory = mackup\n' "$mackup_dir")"
|
||||
|
||||
if [[ -f "$cfg" ]] && [[ "$(cat "$cfg")" == "$desired" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ -L "$cfg" || -f "$cfg" ]]; then
|
||||
cp -f "$cfg" "$cfg.bak.$(date +%s)" 2>/dev/null || true
|
||||
rm -f "$cfg"
|
||||
fi
|
||||
printf '%s\n' "$desired" > "$cfg"
|
||||
ssr::ok "Wrote $cfg"
|
||||
}
|
||||
|
||||
ssr::mackup::backup() {
|
||||
ssr::log "mackup backup"
|
||||
mackup -f backup
|
||||
}
|
||||
|
||||
ssr::mackup::restore() {
|
||||
ssr::log "mackup restore"
|
||||
mackup restore
|
||||
}
|
||||
Reference in New Issue
Block a user