Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci(format): add run_format.sh script #62

Merged
merged 1 commit into from
Mar 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 1 addition & 1 deletion .github/workflows/format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ jobs:
- uses: actions/checkout@v4
- uses: psf/black@stable
with: # see: https://black.readthedocs.io/en/stable/getting_started.html
version: "~= 23.11.0"
version: "~= 24.3.0"
45 changes: 45 additions & 0 deletions run_format.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env bash

set -euo pipefail

cd "$(dirname "$0")" || exit 1
Copy link
Contributor

Choose a reason for hiding this comment

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

能否避免修改工作目录,比如我经常在 dipu 目录跑各种脚本。运行

bash ../run_format.sh

就会切到仓库根目录

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

不会切,source 才会


extract_first_version() {
version_pattern="\b[0-9]+(\.[0-9]+)+\b"
if [[ $1 =~ $version_pattern ]]; then
echo "${BASH_REMATCH[0]}"
else
echo "Unknown"
fi
}

get_cmd_version() {
cmd=$1
extract_first_version "$($cmd --version 2>&1 | head -n 1)"
}

check_cmd_version() {
cmd=$1
required_version=$2
required_version_regex=^${required_version//x/[0-9]+}
command -v "$cmd" >/dev/null || (echo "$cmd not found" && exit 1)
current_version=$(get_cmd_version "$cmd")
if [[ $current_version =~ $required_version_regex ]]; then
echo "$cmd $required_version found, version: $current_version"
else
echo "WARNING! GitHub Actions CI uses $cmd $required_version, current version: $current_version"
fi
}

# format all C/C++ files in current git repository with clang-format
check_cmd_version clang-format 17.x
Copy link
Contributor

Choose a reason for hiding this comment

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

假如开发者只修改了 Python 代码但没有动过 C++,同时开发机也没有 clang 17,这种情况会不会不太方便

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

他不会崩

git ls-files |\
grep -E '^.+\.(c|h|cpp|cc|cxx|hpp|hh|hxx|cu|cuh)$' |\
xargs clang-format -i --style=file

check_cmd_version black 24.x
# format all Python files in current git repository with black
# now only for dipu
git ls-files |\
grep -E '^.+\.py$' |\
xargs black
Loading