]> git.ipfire.org Git - thirdparty/plymouth.git/commitdiff
.gitlab-ci: Don't regress formatting
authorRay Strode <rstrode@redhat.com>
Mon, 4 Apr 2022 19:06:15 +0000 (15:06 -0400)
committerRay Strode <rstrode@redhat.com>
Tue, 5 Apr 2022 00:24:06 +0000 (20:24 -0400)
The formatting in the codebase isn't perfect, but there's no
reason to make it worse.

This commit adds a CI check to make sure new code is styled
right.

.gitlab-ci.yml
scripts/check-format.sh [new file with mode: 0755]

index f7ecf28ef0088d9f3830f3bfb1a63dcced961320..56283a0c410d268fae5f3d2526c37740e3dfd979 100644 (file)
@@ -4,6 +4,7 @@ stages:
 
 .autotools-build: &autotools-build
   script:
+    - scripts/check-format.sh
     - NOCONFIGURE=1 ./autogen.sh
     - mkdir _build && cd _build
     - ../configure --prefix /usr
@@ -15,7 +16,7 @@ fedora-x86_64:
   stage: build
   image: 'registry.fedoraproject.org/fedora:35'
   before_script:
-    - dnf install -y gcc libtool intltool gtk3-devel git libpng-devel gettext-devel libxslt docbook-style-xsl cairo-devel systemd-devel systemd-udev kernel-headers libdrm-devel pango-devel make ShellCheck
+    - dnf install -y gcc libtool intltool gtk3-devel git libpng-devel gettext-devel libxslt docbook-style-xsl cairo-devel systemd-devel systemd-udev kernel-headers libdrm-devel pango-devel make ShellCheck uncrustify patchutils
   <<: *autotools-build
   only:
     - merge_requests
@@ -25,7 +26,7 @@ debian-stable-x86_64:
   image: debian:stable
   before_script:
     - apt-get update -qq
-    - apt-get install -y -qq --no-install-recommends autoconf automake autopoint bc build-essential docbook-xsl gcc gettext git intltool libdrm-dev libgtk-3-dev libpango1.0-dev libpng-dev libtool libudev-dev make pkg-config libsystemd-dev udev xsltproc shellcheck
+    - apt-get install -y -qq --no-install-recommends autoconf automake autopoint bc build-essential docbook-xsl gcc gettext git intltool libdrm-dev libgtk-3-dev libpango1.0-dev libpng-dev libtool libudev-dev make pkg-config libsystemd-dev udev xsltproc shellcheck uncrustify patchutils
   <<: *autotools-build
   only:
     - merge_requests
diff --git a/scripts/check-format.sh b/scripts/check-format.sh
new file mode 100755 (executable)
index 0000000..2e31318
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+if [ -z "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then
+    UPSTREAM_BRANCH="$(git rev-parse --abbrev-ref --symbolic-full-name @{u})"
+else
+    UPSTREAM_BRANCH="$CI_MERGE_REQUEST_DIFF_BASE_SHA"
+fi
+
+cp scripts/default.cfg latest-uncrustify-config.cfg
+
+git diff --quiet
+DIRTY_TREE="$?"
+
+if [ "$DIRTY_TREE" -ne 0 ]; then
+    git stash
+    git stash apply
+fi
+
+find -name '*.[ch]' -exec uncrustify -q -c latest-uncrustify-config.cfg --replace {} \;
+git diff > after
+
+git reset --hard $UPSTREAM_BRANCH
+find -name '*.[ch]' -exec uncrustify -q -c latest-uncrustify-config.cfg --replace {} \;
+git diff > before
+
+interdiff --no-revert-omitted before after > diff
+
+if [ -n "$(cat diff)" ]; then
+    echo "Uncrustify found style abnormalities" 2>&1
+    cat diff
+    exit 1
+fi
+
+git reset --hard HEAD@{1}
+
+if [ "$DIRTY_TREE" -ne 0 ]; then
+    git stash pop
+fi
+
+echo "No new style abnormalities found by uncrustify!"
+exit 0
+