Skip to content

Commit 6e49a01

Browse files
committed
prepare v2 for main merge
1 parent d7092a5 commit 6e49a01

22 files changed

Lines changed: 1043 additions & 496 deletions

.githooks/pre-commit

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,41 @@
11
#!/bin/bash
22

3+
set -euo pipefail
4+
35
# Pre-commit hook for Swift code formatting
46
# 在提交前自动格式化 Swift 代码
57

6-
# 获取所有待提交的 Swift 文件
7-
SWIFT_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.swift$')
8-
9-
if [ -z "$SWIFT_FILES" ]; then
10-
# 没有 Swift 文件变更,直接退出
11-
exit 0
12-
fi
13-
14-
echo "🔍 检测到 Swift 文件变更,开始格式化..."
8+
REPO_ROOT="$(git rev-parse --show-toplevel)"
9+
CONFIG_FILE="$REPO_ROOT/.swift-format"
1510

16-
# 检查是否安装了 swift-format (Apple 官方)
17-
if ! command -v swift-format &> /dev/null; then
11+
if ! command -v swift-format >/dev/null 2>&1; then
1812
echo "⚠️ 未找到 swift-format,跳过格式化"
1913
echo " 安装方法: brew install swift-format"
2014
echo ""
2115
echo " 或者跳过此检查: git commit --no-verify"
2216
exit 0
2317
fi
2418

25-
# swift-format 使用默认规则或项目根目录的 .swift-format 配置
19+
SWIFT_FILES=()
20+
while IFS= read -r -d '' file; do
21+
SWIFT_FILES+=("$file")
22+
done < <(git diff --cached --name-only --diff-filter=ACM -z -- '*.swift')
23+
24+
if [ "${#SWIFT_FILES[@]}" -eq 0 ]; then
25+
exit 0
26+
fi
27+
28+
echo "🔍 检测到 Swift 文件变更,开始格式化..."
2629

27-
# 格式化每个文件
2830
FORMATTED_COUNT=0
29-
for file in $SWIFT_FILES; do
31+
for file in "${SWIFT_FILES[@]}"; do
3032
if [ -f "$file" ]; then
3133
echo " 📝 格式化: $file"
32-
33-
# 格式化文件 (swift-format 会自动查找 .swift-format 配置)
34-
swift-format format --in-place "$file"
35-
36-
# 重新暂存格式化后的文件
34+
swift-format format --configuration "$CONFIG_FILE" --in-place "$file"
3735
git add "$file"
38-
3936
FORMATTED_COUNT=$((FORMATTED_COUNT + 1))
4037
fi
4138
done
4239

4340
echo "✅ 格式化完成 ($FORMATTED_COUNT 个文件)"
4441
echo ""
45-
46-
exit 0

.github/workflows/ci.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- version2-beta
8+
pull_request:
9+
workflow_dispatch:
10+
11+
jobs:
12+
build-and-test:
13+
name: Build and Test
14+
runs-on: macos-15
15+
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
20+
- name: Show Swift Version
21+
run: swift --version
22+
23+
- name: Build
24+
run: swift build
25+
26+
- name: Test
27+
run: swift test --no-parallel

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
.DS_Store
22
/.build
33
/Packages
4+
/.swiftpm
5+
Package.resolved
46
/*.xcodeproj
57
xcuserdata/
68
DerivedData/
79
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
810
/.vscode
9-
/.claude
11+
/.claude

.swift-format

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"version" : 1,
3+
"indentation" : {
4+
"spaces" : 2
5+
},
6+
"lineLength" : 100,
7+
"maximumBlankLines" : 1,
8+
"multiElementCollectionTrailingCommas" : true,
9+
"respectsExistingLineBreaks" : true,
10+
"indentConditionalCompilationBlocks" : true,
11+
"lineBreakBeforeControlFlowKeywords" : false,
12+
"lineBreakBeforeEachArgument" : false,
13+
"spacesAroundRangeFormationOperators" : false,
14+
"rules" : {
15+
"DoNotUseSemicolons" : true,
16+
"NoEmptyTrailingClosureParentheses" : true,
17+
"NoParensAroundConditions" : true,
18+
"OrderedImports" : true,
19+
"ReturnVoidInsteadOfEmptyTuple" : true,
20+
"UseShorthandTypeNames" : true,
21+
"UseTripleSlashForDocumentationComments" : true
22+
}
23+
}

.swiftformat

Lines changed: 0 additions & 185 deletions
This file was deleted.

0 commit comments

Comments
 (0)