Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ jobs:
exit -1
fi

- name: cmake-format check
run: |
pre-commit run cmake-format -a

- name: Build Docs
working-directory: "cpp/build"
run: |
Expand Down
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ repos:
types_or: [c++]
args: [--style=file, --verbose]
exclude: ^cpp/thirdparty/

- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.10
hooks:
- id: cmake-format

Comment on lines +51 to 55
Copy link

Copilot AI Mar 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cmake-format hook is added, but the repository config file is named cmake-format.py and isn't referenced here. cmake-format typically auto-discovers .cmake-format.py/.cmake-format.yaml, so this setup may run with default formatting settings in CI and on contributors' machines. Rename the config to .cmake-format.py or pass the config explicitly via hook args (e.g., --config-files cmake-format.py).

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cmake-format.py also can find it.

- repo: https://github.com/pocc/pre-commit-hooks
rev: v1.3.5
Expand Down
74 changes: 74 additions & 0 deletions cmake-format.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# cmake-format configuration file

# -----------------------------
# Options affecting formatting.
# -----------------------------
with section("format"):
# How wide to allow formatted cmake files
line_width = 90

# How many spaces to tab for indent
tab_size = 2

# If a positional argument group contains more than this many arguments,
# then force it to a vertical layout.
max_pargs_hwrap = 4

# If the statement spelling length (including space and parenthesis) is
# smaller than this amount, then force reject nested layouts.
# This value only comes into play when considering whether or not to nest
# arguments below their parent. If the number of characters in the parent
# is less than this value, we will not nest.
min_prefix_chars = 32

# If true, separate flow control names from their parentheses with a space
separate_ctrl_name_with_space = False

# If true, separate function names from parentheses with a space
separate_fn_name_with_space = False

# If a statement is wrapped to more than one line, than dangle the closing
# parenthesis on it's own line
dangle_parens = False

# What style line endings to use in the output.
line_ending = "unix"

# Format command names consistently as 'lower' or 'upper' case
command_case = "lower"

# Format keywords consistently as 'lower' or 'upper' case
keyword_case = "unchanged"

# ------------------------------------------------
# Options affecting comment reflow and formatting.
# ------------------------------------------------
with section("markup"):
# enable comment markup parsing and reflow
enable_markup = False

# If comment markup is enabled, don't reflow the first comment block in
# eachlistfile. Use this to preserve formatting of your
# copyright/licensestatements.
first_comment_is_literal = True

# If comment markup is enabled, don't reflow any comment block which
# matches this (regex) pattern. Default is `None` (disabled).
literal_comment_pattern = None
Loading
Loading