From 3fa4056f97017d2346e5c1e2506c6396f080171e Mon Sep 17 00:00:00 2001 From: Nils Dijk Date: Thu, 9 Nov 2023 14:02:07 +0000 Subject: [PATCH] add sort_and_group_includes to CI --- .github/workflows/build_and_test.yml | 2 ++ ci/README.md | 15 +++++++++++++++ ci/{include-grouping.py => include_grouping.py} | 0 ci/sort_and_group_includes.sh | 12 ++++++++++++ 4 files changed, 29 insertions(+) rename ci/{include-grouping.py => include_grouping.py} (100%) create mode 100755 ci/sort_and_group_includes.sh diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 6b33c658f..a36cf148d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -76,6 +76,8 @@ jobs: run: ci/editorconfig.sh && git diff --exit-code - name: Remove useless declarations run: ci/remove_useless_declarations.sh && git diff --cached --exit-code + - name: Sort and group includes + run: ci/sort_and_group_includes.sh && git diff --cached --exit-code - name: Normalize test output run: ci/normalize_expected.sh && git diff --exit-code - name: Check for C-style comments in migration files diff --git a/ci/README.md b/ci/README.md index 37ef94f4f..2fe2d453a 100644 --- a/ci/README.md +++ b/ci/README.md @@ -385,3 +385,18 @@ definitions are in alphabetical order. ## `print_stack_trace.sh` This script prints stack traces for failed tests, if they left core files. + +## `sort_and_group_includes.sh` + +This script checks and fixes issues with include grouping and sorting in C files. + +Includes are grouped in the following groups: + - System includes (eg. `#include `) + - Postgres.h include (eg. `#include "postgres.h"`) + - Naked postgres includes (includes not in a directory eg. `#include "miscadmin.h`) + - Postgres includes in a directory (eg. `#include "catalog/pg_type.h"`) + - Naked citus includes (eg. `#include "pg_version_constants.h"`) + - Columnar includes (eg. `#include "columnar/columnar.h"`) + - Distributed includes (eg. `#include "distributed/maintenanced.h"`) + +Within every group the include lines are sorted alphabetically. diff --git a/ci/include-grouping.py b/ci/include_grouping.py similarity index 100% rename from ci/include-grouping.py rename to ci/include_grouping.py diff --git a/ci/sort_and_group_includes.sh b/ci/sort_and_group_includes.sh new file mode 100755 index 000000000..1c3a91458 --- /dev/null +++ b/ci/sort_and_group_includes.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -euo pipefail +# shellcheck disable=SC1091 +source ci/ci_helpers.sh + +git ls-files \ + | git check-attr --stdin citus-style \ + | grep 'citus-style: set' \ + | awk '{print $1}' \ + | cut -d':' -f1 \ + | xargs -n1 ./ci/include_grouping.py