[fractal/fractal-next] pre-commit: Export logic to separate script
- From: Julian Sparber <jsparber src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal/fractal-next] pre-commit: Export logic to separate script
- Date: Wed, 19 Jan 2022 23:12:17 +0000 (UTC)
commit a53b20bfab37bcc25d1ed3650bcede4be6727e4b
Author: Kévin Commaille <zecakeh tedomum fr>
Date: Fri Jan 14 17:06:00 2022 +0100
pre-commit: Export logic to separate script
hooks/pre-commit.hook | 74 +++++++++++++++++++--------------------------------
scripts/checks.sh | 55 ++++++++++++++++++++++++++++++++++++++
2 files changed, 82 insertions(+), 47 deletions(-)
---
diff --git a/hooks/pre-commit.hook b/hooks/pre-commit.hook
index 452a415a..66f888ac 100755
--- a/hooks/pre-commit.hook
+++ b/hooks/pre-commit.hook
@@ -1,57 +1,37 @@
#!/bin/sh
-# Source: https://gitlab.gnome.org/GNOME/fractal/blob/master/hooks/pre-commit.hook
-
-install_rustfmt() {
- if ! which rustup &> /dev/null; then
- curl https://sh.rustup.rs -sSf | sh -s -- -y
- export PATH=$PATH:$HOME/.cargo/bin
- if ! which rustup &> /dev/null; then
- echo "Failed to install rustup. Performing the commit without style checking."
- exit 0
- fi
- fi
-
- if ! rustup component list|grep rustfmt &> /dev/null; then
- echo "Installing rustfmt…"
- rustup component add rustfmt
- fi
-}
-
-if ! which cargo >/dev/null 2>&1 || ! cargo fmt --help >/dev/null 2>&1; then
- echo "Unable to check Fractal’s code style, because rustfmt could not be run."
-
- if [ ! -t 1 ]; then
- # No input is possible
- echo "Performing commit."
- exit 0
- fi
+# Depends on: scripts/checks.sh
+echo "-- Pre-commit checks --"
+echo "To ignore these checks next time, run: git commit --no-verify"
+echo ""
+if scripts/checks.sh; then
echo ""
- echo "y: Install rustfmt via rustup"
- echo "n: Don't install rustfmt and perform the commit"
- echo "Q: Don't install rustfmt and abort the commit"
-
+ echo "Pre-commit checks result: ok"
+elif [[ $? -eq 2 ]]; then
+ echo "A missing dependency was found"
+ echo ""
+ echo "y: Skip checks and proceed with commit"
+ echo "N: Abort commit"
echo ""
while true
do
- echo -n "Install rustfmt via rustup? [y/n/Q]: "; read yn < /dev/tty
+ echo -n "Skip the pre-commit checks? [y/N]: "; read yn < /dev/tty
case $yn in
- [Yy]* ) install_rustfmt; break;;
- [Nn]* ) echo "Performing commit."; exit 0;;
- [Qq]* | "" ) echo "Aborting commit."; exit -1 >/dev/null 2>&1;;
- * ) echo "Invalid input";;
+ [Yy]* )
+ echo "Skipping checks…"
+ exit 0
+ ;;
+ [Nn]* | "" )
+ echo "Aborting commit"
+ exit 1
+ ;;
+ * )
+ echo "Invalid input"
+ ;;
esac
done
-
-fi
-
-echo "--Checking style--"
-cargo fmt --all -- --check
-if test $? != 0; then
- echo "--Checking style fail--"
- echo "Please fix the above issues, either manually or by running: cargo fmt --all"
-
- exit -1
else
- echo "--Checking style pass--"
-fi
+ echo "Pre-commit checks result: fail"
+ echo "Aborting commit"
+ exit 1
+fi
\ No newline at end of file
diff --git a/scripts/checks.sh b/scripts/checks.sh
new file mode 100755
index 00000000..4996edf8
--- /dev/null
+++ b/scripts/checks.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+# Source: https://gitlab.gnome.org/GNOME/fractal/blob/master/hooks/pre-commit.hook
+
+install_rustfmt() {
+ if ! which rustup &> /dev/null; then
+ curl https://sh.rustup.rs -sSf | sh -s -- -y
+ export PATH=$PATH:$HOME/.cargo/bin
+ if ! which rustup &> /dev/null; then
+ echo "Failed to install rustup."
+ exit 2
+ fi
+ fi
+
+ if ! rustup component list|grep rustfmt &> /dev/null; then
+ echo "Installing rustfmt…"
+ rustup component add rustfmt
+ fi
+}
+
+if ! which cargo >/dev/null 2>&1 || ! cargo fmt --help >/dev/null 2>&1; then
+ echo "Unable to check Fractal’s code style, because rustfmt could not be run."
+
+ if [ ! -t 1 ]; then
+ # No input is possible
+ echo "Performing commit."
+ exit 0
+ fi
+
+ echo ""
+ echo "y: Install rustfmt via rustup"
+ echo "N: Don't install rustfmt"
+
+ echo ""
+ while true
+ do
+ echo -n "Install rustfmt? [y/N]: "; read yn < /dev/tty
+ case $yn in
+ [Yy]* ) install_rustfmt; break;;
+ [Nn]* | "" ) exit 2 >/dev/null 2>&1;;
+ * ) echo "Invalid input";;
+ esac
+ done
+
+fi
+
+echo "--Checking style--"
+cargo fmt --all -- --check
+if test $? != 0; then
+ echo "--Checking style fail--"
+ echo "Please fix the above issues, either manually or by running: cargo fmt --all"
+
+ exit 1
+else
+ echo "--Checking style pass--"
+fi
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]