]> git.mdlowis.com Git - proto/labwc.git/commitdiff
checkpatch: add scripts/check for batch processing
authorJohan Malm <jgm323@gmail.com>
Fri, 14 Oct 2022 22:16:01 +0000 (23:16 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Thu, 3 Nov 2022 19:20:23 +0000 (19:20 +0000)
Co-Authored-By: @Consolatis
CONTRIBUTING.md
scripts/README.md [new file with mode: 0644]
scripts/check [new file with mode: 0755]

index 5e3f2e8b2c8e47ac0caec7e84ca9debe71f5d75f..e8303a7f3e3d5bb81d84429202b0b4b473048a83 100644 (file)
@@ -102,7 +102,7 @@ The reasons for specifying a style is not that we enjoy creating rules, but
 because it makes reading/maintaining the code and spotting problems much easier.
 
 If you are new to this style and want to get going quickly, either just imitate
-the style around you, or read the summary below and use [checkpatch.pl] to run
+the style around you, or read the summary below and use `./scripts/check` to run
 some formatting checks.
 
 ## Linux Kernel Style Basics
@@ -341,7 +341,6 @@ xgettext --keyword=_ --language=C --add-comments -o po/labwc.pot src/menu/menu.c
 [common/mem.h]: https://github.com/labwc/labwc/blob/master/include/common/mem.h
 [common/list.h]: https://github.com/labwc/labwc/blob/master/include/common/list.h
 [commit messages]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/CONTRIBUTING.md#commit-messages 
-[checkpatch.pl]: https://github.com/johanmalm/checkpatch.pl
 [GNU C extensions]: https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html
 [`wl_container_of()`]: https://github.com/wayland-project/wayland/blob/985ab55d59db45ea62795c76dff5949343e86b2f/src/wayland-util.h#L409
 
diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644 (file)
index 0000000..8e5ebd1
--- /dev/null
@@ -0,0 +1,10 @@
+These scripts are intended to be run from the project top-level directory
+like this: `scripts/foo.sh`
+
+- `scripts/check`: wrapper to check all files in `src/` and `include/`
+
+- `scripts/checkpatch.pl`: Quick hack on the Linux kernel [checkpatch.pl]
+  to lint C files written according to the labwc coding style. Run like
+  this: `./checkpatch.pl --no-tree --terse --strict --file <file>`
+
+[checkpatch.pl]: https://raw.githubusercontent.com/torvalds/linux/4ce9f970457899defdf68e26e0502c7245002eb3/scripts/checkpatch.pl
diff --git a/scripts/check b/scripts/check
new file mode 100755 (executable)
index 0000000..7b8c625
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+file=
+
+usage_message="Usage: check [OPTIONS]
+OPTIONS:
+--file=<filename>          Specify file to check. If none specified, all
+                           files in src/ and include/ will be checked.
+"
+
+run_checkpatch() {
+       nice scripts/checkpatch.pl --terse --no-tree --strict --file "$1"
+       return $?
+}
+
+run_checks () {
+       if [ ! -z "$file" ]; then
+               run_checkpatch "${file}"
+               return $?
+       fi
+
+       find src/ include/ \( -name "*.c" -o -name "*.h" \) -type f |
+       {
+               errors=0
+               while IFS= read -r file; do
+                       run_checkpatch "$file" || errors=1
+               done
+               return ${errors}
+       }
+}
+
+main () {
+       for arg
+       do
+               opt=${arg%%=*}
+               var=${arg#*=}
+               case "$opt" in
+               --file)
+                       file="$var" ;;
+               -h|--help)
+                       printf '%b' "$usage_message"; exit 1 ;;
+               *)
+                       printf '%b\n' "warn: unknown option $opt" >&2 ;;
+               esac
+       done
+
+       run_checks
+}
+
+main "$@"