blob: b16f4739dd83270af64afc5902038f7afd94e53c [file] [log] [blame]
#!/bin/sh
here=${0%/*}
CHIP_ROOT=$(cd "$here/.." && pwd)
SAVED_UNSTAGED=0
SAVED_UNSTAGED_FILE=$(git rev-parse --short HEAD)-unstaged.diff
RESTYLED=0
save_unstaged() {
if [[ $SAVED_UNSTAGED -ne 0 ]]; then
git diff --output="$SAVED_UNSTAGED_FILE"
git apply -R "$SAVED_UNSTAGED_FILE"
fi
}
revert_unstaged() {
if [[ $SAVED_UNSTAGED -ne 0 ]]; then
git apply "$SAVED_UNSTAGED_FILE"
rm "$SAVED_UNSTAGED_FILE"
fi
SAVED_UNSTAGED=0
}
revert_restyled() {
if [[ $RESTYLED -ne 0 ]]; then
# Reset the changes introduced by restyle
git stash push -q --keep-index
git stash drop -q
fi
RESTYLED=0
}
revert_if_needed() {
revert_restyled
revert_unstaged
}
trap "revert_if_needed; exit 1" SIGINT SIGTERM SIGKILL
git diff --quiet
SAVED_UNSTAGED=$?
# If there are unstaged files, save them for now
save_unstaged
# Try restyling the code
"$CHIP_ROOT"/scripts/helpers/restyle-diff.sh
git diff --quiet
RESTYLED=$?
FAILED_COMMIT="$RESTYLED"
revert_if_needed
if [[ $FAILED_COMMIT -ne 0 ]]; then
echo "Commit Failed: Code needs restyling before committing."
echo "Restyling can be done by running $CHIP_ROOT/scripts/helpers/restyle-diff.sh"
exit 1
fi
echo "Code doesn't need restyling. Committing."