#!/usr/bin/env bash

set -euo pipefail

DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")"
PATCH="$DIRNAME/upgradeable.patch"

error() {
  echo Error: "$*" >&2
  exit 1
}

if ! git diff-files --quiet ":!$PATCH"; then
  error "Unstaged changes. Stage to include in patch or temporarily stash."
fi

git diff-index --cached --patch --output="$PATCH" HEAD
git restore --staged --worktree ":!$PATCH"