#!/bin/sh # Nate's Cleaner installer — https://cleaner.nates-software.com # Downloads version 0.2.0, verifies its SHA-256, installs into # ~/.local/share/nates-cleaner and adds the `nates-cleaner` command to ~/.local/bin. set -eu VERSION="0.2.0" SHA256="5ebc6093add6a8831803faf54320d3f379daeed396840a1390589f76cc50a5eb" URL="https://cleaner.nates-software.com/nates-cleaner-$VERSION.tar.gz" DEST="${NATES_CLEANER_HOME:-$HOME/.local/share/nates-cleaner}" case "$(uname -s)" in Darwin|Linux) ;; *) echo "Nate's Cleaner supports macOS and Linux." >&2; exit 1 ;; esac sha256() { if command -v shasum >/dev/null 2>&1; then shasum -a 256 "$1" | cut -d' ' -f1 else sha256sum "$1" | cut -d' ' -f1; fi } tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT echo "Downloading Nate's Cleaner $VERSION…" curl -fsSL "$URL" -o "$tmp/nates-cleaner.tar.gz" actual=$(sha256 "$tmp/nates-cleaner.tar.gz") if [ "$actual" != "$SHA256" ]; then echo "Checksum mismatch (expected $SHA256, got $actual). Nothing was installed." >&2 exit 1 fi mkdir -p "$DEST" rm -rf "$DEST/$VERSION.partial" mkdir "$DEST/$VERSION.partial" tar -xzf "$tmp/nates-cleaner.tar.gz" -C "$DEST/$VERSION.partial" --strip-components=1 rm -rf "$DEST/$VERSION" mv "$DEST/$VERSION.partial" "$DEST/$VERSION" ln -sfn "$DEST/$VERSION" "$DEST/current" sh "$DEST/current/install.sh"