mirror of
https://github.com/basecamp/omarchy.git
synced 2025-07-27 12:19:24 +00:00

This is a minor follow-up to dcc4071979
to leverage the `--autostash` flag of `git pull` which does the same
thing we were doing in three separate commands.
This also avoids the possibility of popping something from the stash
that `omarchy-update` didn't actually stash. In other words, if the
initial `git stash` was a no-op (because there were no changes in the
working tree), it's actually not desirable for `omarchy-update` to
`git stash pop` at the end, since that potentially pops something the
user had manually stashed (we only want `omarchy-update` to pop its own
stash entry). Using `--autostash` handles this correctly.
Ref:
https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---autostash
32 lines
691 B
Bash
Executable File
32 lines
691 B
Bash
Executable File
#!/bin/bash
|
|
|
|
cd ~/.local/share/omarchy
|
|
|
|
if [[ $1 == "all" ]]; then
|
|
# Run all migrations
|
|
last_updated_at=1
|
|
else
|
|
# Remember the version we're at before upgrading
|
|
last_updated_at=$(git log -1 --format=%cd --date=unix)
|
|
fi
|
|
|
|
# Get the latest while trying to preserve any modifications
|
|
git pull --autostash
|
|
|
|
# Run any pending migrations
|
|
for file in migrations/*.sh; do
|
|
filename=$(basename "$file")
|
|
migrate_at="${filename%.sh}"
|
|
|
|
if [ $migrate_at -gt $last_updated_at ]; then
|
|
echo -e "\e[32m\nRunning migration ($migrate_at)\e[0m"
|
|
source $file
|
|
fi
|
|
done
|
|
|
|
# Back to where we came from
|
|
cd - >/dev/null
|
|
|
|
echo -e ""
|
|
gum confirm "Update system packages too?" && yay -Syu --noconfirm
|