48 lines
1.5 KiB
Bash
Executable File
48 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
BOOK_DIR="$(cat $HOME/.Books/bookdir)"
|
|
|
|
lb=$(echo -e '\033[38;5;94m')
|
|
db=$(echo -e '\033[38;5;95m')
|
|
blank=$(echo -e '\033[0m')
|
|
bold=$(echo -e '\033[1m')
|
|
|
|
|
|
#check if any instances of write.sh FORKED or manuskript are running first
|
|
if (ps -ef | grep -v grep | grep manuskript &>/dev/null); then
|
|
echo "You need to exit Manuskript before you roll back."
|
|
exit 1
|
|
fi
|
|
pkill -f "write.sh FORKED"
|
|
|
|
cd $BOOK_DIR
|
|
|
|
if ! (git log --oneline | grep -n autosave | grep -v HEAD &>/dev/null); then
|
|
echo "Nothing to roll back to."
|
|
exit
|
|
fi
|
|
|
|
echo "==============================================="
|
|
|
|
now=$(date +%s)
|
|
|
|
git log --oneline | grep -n autosave | grep -v HEAD | head -n 10 | while read line; do
|
|
ln=${line%%:*}
|
|
savetime=$(date -d "$(echo $line | awk '{print $2 " " $3}')" +%s)
|
|
ago=$(( (now - savetime) / 60 ))
|
|
echo "${bold}${lb}${ln}${blank}@${db}$(date -d @$savetime +'%a %d %b %H:%M:%S')${blank}@${lb}${ago} minutes ago"
|
|
done | column -s@ -t --table-columns Save,Time, --table-right Save
|
|
|
|
echo $db
|
|
read -ep " Choose a save to roll back to: $lb" saveno
|
|
echo
|
|
ddate=$(git log --oneline | grep -n --color=always autosave | grep --color=always -v HEAD | head -n $saveno | tail -n1 | awk '{print $2 " " $3}' | xargs -I@ date -d '@')
|
|
read -sn1 -p "$db Restore save from${lb} ${ddate}${db}? [y|N]" yn
|
|
if [ ${yn,,} == 'y' ]; then
|
|
savecommit=$(git log --oneline | grep -n autosave | grep -v HEAD | head -n $saveno | tail -n1 | sed -E 's/[0-9]*:([0-9a-f]*) .*/\1/')
|
|
echo
|
|
echo
|
|
git reset --hard $savecommit &>/dev/null
|
|
echo " Rolled back to $ddate."
|
|
fi
|
|
echo |