diff options
author | Ray Strode <rstrode@redhat.com> | 2022-04-04 15:06:15 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2022-04-04 20:24:06 -0400 |
commit | 25523a2f8743f6e3ca53600f094bf1396eb7967e (patch) | |
tree | 4c74e8571c66506db6f6731fd31184eda8979070 | |
parent | 651c22f11ac6674e7591fe1f35dc0c0de5f22cee (diff) |
.gitlab-ci: Don't regress formatting
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.
-rw-r--r-- | .gitlab-ci.yml | 5 | ||||
-rwxr-xr-x | scripts/check-format.sh | 42 |
2 files changed, 45 insertions, 2 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7ecf28e..56283a0c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 index 00000000..2e313189 --- /dev/null +++ b/scripts/check-format.sh @@ -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 + |