diff --git a/.gitattributes b/.gitattributes index 39d58ea0faacbcd847a87f260c91df0724c6daa4..95a1320ecf970d6da5f0841918a0df59574de392 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,7 +3,7 @@ .hooks* export-ignore # Custom attribute to mark sources as using our C code style. -[attr]our-c-style whitespace=tab-in-indent +[attr]our-c-style whitespace=tab-in-indent format.clang-format /GitSetup export-ignore /*.sh export-ignore eol=lf diff --git a/clang-format.bash b/clang-format.bash index 3e82770f9eb821b68ab3660219e9d81453a1a8d3..8fa347c84c29532dfb94de953079edc09697d452 100755 --- a/clang-format.bash +++ b/clang-format.bash @@ -1,6 +1,6 @@ #!/usr/bin/env bash #============================================================================= -# Copyright 2015-2016 Kitware, Inc. +# Copyright 2015-2017 Kitware, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -106,17 +106,18 @@ case "$mode" in *) die "invalid mode: $mode" ;; esac -# Filter sources to which our style should apply. -list_cfg_files() { - $git_ls -z -- '*.c.in' '*.h.in' '*.hxx.in' -} -list_all_files() { - $git_ls -z -- '*.c' '*.c.in' '*.cxx' '*.h' '*.h.in' '*.hxx' '*.hxx.in' +# List files as selected above. +list_files() { + $git_ls | + + # Select sources with our attribute. + git check-attr --stdin format.clang-format | + sed -n '/: format\.clang-format: set$/ {s/:[^:]*:[^:]*$//p}' } # Transform configured sources to protect @SYMBOLS@. -list_cfg_files | xargs -0 -r sed -i 's/@\(KWSYS_[A-Z0-9_]\+\)@/x\1x/g' +list_files | xargs -d '\n' sed -i 's/@\(KWSYS_[A-Z0-9_]\+\)@/x\1x/g' # Update sources in-place. -list_all_files | xargs -0 "$clang_format" -i +list_files | xargs -d '\n' "$clang_format" -i # Transform configured sources to restore @SYMBOLS@. -list_cfg_files | xargs -0 -r sed -i 's/x\(KWSYS_[A-Z0-9_]\+\)x/@\1@/g' +list_files | xargs -d '\n' sed -i 's/x\(KWSYS_[A-Z0-9_]\+\)x/@\1@/g'