From 336cb4c6132f4f7d29b549d11984b7f407794f04 Mon Sep 17 00:00:00 2001 From: easy Date: Tue, 17 Dec 2019 16:16:04 +1100 Subject: [PATCH 1/3] Add tools/format.sh which formats all files automatically. Uses clang-format, cmake-format, and buildifier. --- tools/format.sh | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 tools/format.sh diff --git a/tools/format.sh b/tools/format.sh new file mode 100755 index 0000000000..c1883f0f60 --- /dev/null +++ b/tools/format.sh @@ -0,0 +1,38 @@ +#!/bin/bash +if [[ ! -e tools/format.sh ]]; then + echo "This tool must be run from the topmost directory." >&2 + exit 1 +fi + +set -e + +FIND="find . -name .git -prune -o -name _deps -prune -o -name .build -prune -o" + +# Correct common miscapitalizations. +sed -i 's/Open[t]elemetry/OpenTelemetry/g' $($FIND -type f -print) +# No CRLF line endings. +sed -i 's/\r$//' $($FIND -type f -print) +# No trailing spaces. +sed -i 's/ \+$//' $($FIND -type f -print) + +CMD=clang-format-8 +$CMD -version +$CMD -i -style=file \ + $($FIND -name '*.cc' -print -o -name '*.h' -print) + +if which cmake-format >/dev/null; then + echo "Running cmake-format $(cmake-format --version 2>&1)." + cmake-format -i $($FIND -name 'CMakeLists.txt' -print) +else + echo "Can't find cmake-format. It can be installed with:" + echo " pip install --user cmake_format" +fi + +if which buildifier >/dev/null; then + echo "Running buildifier." + buildifier $($FIND -name WORKSPACE -print -o -name BUILD -print -o \ + -name '*.bzl' -print) +else + echo "Can't find buildifier. It can be installed with:" + echo " go get github.com/bazelbuild/buildtools/buildifier" +fi From 87c6fb9a6a6eddefca8bfd022272150bd17e0a19 Mon Sep 17 00:00:00 2001 From: easy Date: Tue, 17 Dec 2019 17:51:36 +1100 Subject: [PATCH 2/3] sed on OSX expects -i (inplace) to take an argument. --- tools/format.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/format.sh b/tools/format.sh index c1883f0f60..cb1e6c20bb 100755 --- a/tools/format.sh +++ b/tools/format.sh @@ -8,12 +8,18 @@ set -e FIND="find . -name .git -prune -o -name _deps -prune -o -name .build -prune -o" +# GNU syntax. +SED=(sed -i) +if [[ "$(uname)" = "Darwin" ]]; then + SED=(sed -i "") +fi + # Correct common miscapitalizations. -sed -i 's/Open[t]elemetry/OpenTelemetry/g' $($FIND -type f -print) +"${SED[@]}" 's/Open[t]elemetry/OpenTelemetry/g' $($FIND -type f -print) # No CRLF line endings. -sed -i 's/\r$//' $($FIND -type f -print) +"${SED[@]}" 's/\r$//' $($FIND -type f -print) # No trailing spaces. -sed -i 's/ \+$//' $($FIND -type f -print) +"${SED[@]}" 's/ \+$//' $($FIND -type f -print) CMD=clang-format-8 $CMD -version From e7939e6a537fd44cb08cf15ecc6a5e52f83f4ca2 Mon Sep 17 00:00:00 2001 From: easy Date: Tue, 17 Dec 2019 17:54:50 +1100 Subject: [PATCH 3/3] Allow user to override $CLANG_FORMAT. Also if clang-format-8 doesn't exist, fall back to clang-format. --- tools/format.sh | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/format.sh b/tools/format.sh index cb1e6c20bb..f06dc3cd04 100755 --- a/tools/format.sh +++ b/tools/format.sh @@ -21,9 +21,16 @@ fi # No trailing spaces. "${SED[@]}" 's/ \+$//' $($FIND -type f -print) -CMD=clang-format-8 -$CMD -version -$CMD -i -style=file \ +# If not overridden, try to use clang-format-8 or clang-format. +if [[ -z "$CLANG_FORMAT" ]]; then + CLANG_FORMAT=clang-format + if which clang-format-8 >/dev/null; then + CLANG_FORMAT=clang-format-8 + fi +fi + +$CLANG_FORMAT -version +$CLANG_FORMAT -i -style=file \ $($FIND -name '*.cc' -print -o -name '*.h' -print) if which cmake-format >/dev/null; then