diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..ab0584a --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,90 @@ +name: Checks +on: + pull_request: + +jobs: + cppcheck: + name: Cppcheck + runs-on: ubuntu-22.04 + + steps: + - name: Checkout sources + uses: actions/checkout@v4 + with: + path: src/percona_pg_telemetry + + - name: Checkout cppcheck sources + uses: actions/checkout@v4 + with: + repository: "danmar/cppcheck" + ref: "2.13.4" + path: src/cppcheck + + - name: Build and install cppcheck + working-directory: src/cppcheck + run: | + mkdir build + cd build + cmake .. + cmake --build . + sudo cmake --install . + + - name: Execute linter check with cppcheck + working-directory: src/percona_pg_telemetry + run: | + set -x + cppcheck --enable=all --inline-suppr --template='{file}:{line},{severity},{id},{message}' --error-exitcode=1 --suppress=missingIncludeSystem --suppress=missingInclude --suppress=unmatchedSuppression:percona_pg_telemetry.c --check-config . + + format: + name: Format + runs-on: ubuntu-22.04 + + steps: + - name: Clone postgres repository + uses: actions/checkout@v4 + with: + repository: 'postgres/postgres' + ref: 'REL_17_STABLE' + + - name: Checkout sources + uses: actions/checkout@v4 + with: + path: 'contrib/percona_pg_telemetry' + + - name: Configure postgres + run: ./configure + + - name: Install perltidy + run: sudo cpan -T SHANCOCK/Perl-Tidy-20230309.tar.gz + + - name: Install pg_bsd_indent + working-directory: src/tools/pg_bsd_indent + run: sudo make install + + - name: Add pg_bsd_indent and pgindent to path + run: | + echo "/usr/local/pgsql/bin" >> $GITHUB_PATH + echo "${{ github.workspace }}/src/tools/pgindent" >> $GITHUB_PATH + - name: Format sources + working-directory: contrib/percona_pg_telemetry + run: | + make update-typedefs + make indent + - name: Check files are formatted and no source code changes + working-directory: contrib/percona_pg_telemetry + run: | + git status + git diff --exit-code + + license: + name: License + runs-on: ubuntu-22.04 + + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Check license headers + uses: apache/skywalking-eyes/header@v0.6.0 + with: + token: "" # Prevent comments diff --git a/.gitignore b/.gitignore index 435ae42..e747072 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ ## .vscode .vscode/ .vscode/* + +# tools files +typedefs-full.list diff --git a/Makefile b/Makefile index 383a9ee..9fcc6fc 100644 --- a/Makefile +++ b/Makefile @@ -24,3 +24,14 @@ top_builddir = ../.. include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif + +# Fetches typedefs list for PostgreSQL core and merges it with typedefs defined in this project. +# https://wiki.postgresql.org/wiki/Running_pgindent_on_non-core_code_or_development_code +update-typedefs: + wget -q -O - "https://buildfarm.postgresql.org/cgi-bin/typedefs.pl?branch=REL_17_STABLE" | cat - typedefs.list | sort | uniq > typedefs-full.list + +# Indents projects sources. +indent: + pgindent --typedefs=typedefs-full.list . + +.PHONY: update-typedefs indent diff --git a/typedefs.list b/typedefs.list new file mode 100644 index 0000000..dc7cd9a --- /dev/null +++ b/typedefs.list @@ -0,0 +1,4 @@ +PTDatabaseInfo +PTExtensionInfo +PTSetttingsInfo +PTSharedState \ No newline at end of file