diff --git a/doc/coding_standards.md b/doc/coding_standards.md index 87ad3043f..189362263 100644 --- a/doc/coding_standards.md +++ b/doc/coding_standards.md @@ -7,6 +7,9 @@ Most stylistic features described below are described as clang-format rules present in the root of the repository, as such most code formatting rules can be applied by simply running clang-format over the source code in question. +You can run [`tools/format-code.sh`] to format all C++ files tracked by +git. + ## Coding Standard qTox is written under **[ISO/IEC 14882:2011 (C++11)][ISO/IEC/C++11]** without @@ -468,3 +471,4 @@ someWidget->setTooltip(QStringLiteral("") + tr("Tra [ISO/IEC/C++11]: http://www.iso.org/iso/catalogue_detail.htm?csnumber=50372 [Exceptions]: https://en.wikipedia.org/wiki/C%2B%2B#Exception_handling [RTTI]: https://en.wikipedia.org/wiki/Run-time_type_information +[`tools/format-code.sh`]: /tools/format-code.sh diff --git a/tools/format-code.sh b/tools/format-code.sh new file mode 100755 index 000000000..8bb7b9f5a --- /dev/null +++ b/tools/format-code.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Copyright © 2017 The qTox Project Contributors +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Format all C++ codebase tracked by git using `clang-format`. + +# Requires: +# * git +# * clang-format + +# usage: +# ./$script + + +# Fail as soon as error appears +set -eu -o pipefail + + +readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +readonly BASE_DIR="$SCRIPT_DIR/../" + +format() { + cd "$BASE_DIR" + [[ -f .clang-format ]] # make sure that it exists + # NOTE: some earlier than 3.8 versions of clang-format are broken + # and will not work correctly + clang-format -i -style=file $(git ls-files *.cpp *.h) +} +format