From d55379bac79d43e292157e92f25efbd292c6722f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Sun, 2 Jun 2024 02:43:40 +0200 Subject: [PATCH 1/2] Add tool to run black on the whole project --- .github/tools/run_black.sh | 68 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100755 .github/tools/run_black.sh diff --git a/.github/tools/run_black.sh b/.github/tools/run_black.sh new file mode 100755 index 000000000..95a3532f3 --- /dev/null +++ b/.github/tools/run_black.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# Exit on error, print commands +set -ex +# +# Copyright (c) Odd Stråbø, 2024 +# File-License: the Unlicense +# +# This is free and unencumbered software released into the public domain. +# +# Anyone is free to copy, modify, publish, use, compile, sell, or +# distribute this software, either in source code form or as a compiled +# binary, for any purpose, commercial or non-commercial, and by any +# means. +# +# In jurisdictions that recognize copyright laws, the author or authors +# of this software dedicate any and all copyright interest in the +# software to the public domain. We make this dedication for the benefit +# of the public at large and to the detriment of our heirs and +# successors. We intend this dedication to be an overt act of +# relinquishment in perpetuity of all present and future rights to this +# software under copyright law. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# For more information, please refer to +# + +# Ensure we are in the repository root +pushd "$(realpath $(dirname $0)/../..)" + +# Make sure black is installed and up to date +pipx upgrade black + +# Make sure we are on latest master +git checkout master +git fetch upstream master +git pull upstream master --ff-only + +# Create new branch, deleting if existing +git checkout -B black + +# Ensure workdir is clean +git stash --include-untracked +git reset --hard + +# Run black and git add changed files +black . -t py38 -t py39 -t py310 -t py311 -t py312 -t py313 2>&1 | sed -nr 's/^reformatted\s(.*)$/\1/p' | tr '\n' '\0' | xargs -0 git add + +# Commit changes +git commit -m 'Tool black: auto-format Python code' + +# Hide previous commit from blame to avoid clutter +echo "# Tool: black" >>.git-blame-ignore-revs +git rev-parse HEAD >>.git-blame-ignore-revs +git add .git-blame-ignore-revs +git commit -m 'Tool black: ignore blame' + +# Push branch to fork +git push --set-upstream origin black --force + +# Go back to previous directory +popd From 3945a17965f0b43180f13daf8ce3c1e619f95c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?= Date: Fri, 7 Jun 2024 19:42:25 +0200 Subject: [PATCH 2/2] Apply review suggestion Co-authored-by: Joshua M. Boniface --- .github/tools/run_black.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/tools/run_black.sh b/.github/tools/run_black.sh index 95a3532f3..213bc0621 100755 --- a/.github/tools/run_black.sh +++ b/.github/tools/run_black.sh @@ -1,6 +1,8 @@ #!/bin/bash # Exit on error, print commands -set -ex +set -o errexit +set -o xtrace + # # Copyright (c) Odd Stråbø, 2024 # File-License: the Unlicense