瀏覽代碼

[formatters] Move lang specific formatters into their own Bash script.

Mario Zechner 1 月之前
父節點
當前提交
61752a1d5f

+ 111 - 0
formatters/format-cpp.sh

@@ -0,0 +1,111 @@
+#!/bin/bash
+set -e
+
+# Format C/C++ files with clang-format
+echo "Formatting C/C++ files..."
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+
+if [ ! -f "$dir/.clang-format" ]; then
+    echo "Error: .clang-format not found in formatters directory"
+    exit 1
+fi
+
+# Define C/C++ source directories - be specific to avoid engine sources
+cpp_dirs=(
+    # spine-cpp
+    "../spine-cpp/include/spine"
+    "../spine-cpp/src/spine"
+    "../spine-cpp/spine-cpp-lite"
+    "../spine-cpp/tests"
+    
+    # spine-c
+    "../spine-c/include"
+    "../spine-c/src"
+    "../spine-c/src/generated"
+    "../spine-c/tests"
+    
+    # spine-godot
+    "../spine-godot/spine_godot"
+    
+    # spine-ue
+    "../spine-ue/Source/SpineUE"
+    "../spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public"
+    "../spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private"
+    "../spine-ue/Plugins/SpinePlugin/Source/SpineEditorPlugin/Public"
+    "../spine-ue/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private"
+    
+    # spine-glfw
+    "../spine-glfw/src"
+    "../spine-glfw/example"
+    
+    # spine-sdl
+    "../spine-sdl/src"
+    "../spine-sdl/example"
+    
+    # spine-sfml
+    "../spine-sfml/c/src/spine"
+    "../spine-sfml/c/example"
+    "../spine-sfml/cpp/src/spine"
+    "../spine-sfml/cpp/example"
+    
+    # spine-cocos2dx
+    "../spine-cocos2dx/spine-cocos2dx/src/spine"
+    "../spine-cocos2dx/example/Classes"
+    
+    # spine-ios
+    "../spine-ios/Sources/SpineCppLite"
+    "../spine-ios/Sources/SpineCppLite/include"
+    "../spine-ios/Sources/SpineShadersStructs"
+    "../spine-ios/Example/Spine iOS Example"
+    
+    # spine-flutter
+    "../spine-flutter/ios/Classes"
+    "../spine-flutter/macos/Classes"
+    "../spine-flutter/src"
+)
+
+# Collect all C/C++ files from specified directories
+files=()
+for cpp_dir in "${cpp_dirs[@]}"; do
+    if [ -d "$cpp_dir" ]; then
+        while IFS= read -r -d '' file; do
+            files+=("$file")
+        done < <(find "$cpp_dir" \( -name "*.c" -o -name "*.cpp" -o -name "*.h" \) \
+                 -not -path "*/.*" \
+                 -not -path "*/build/*" \
+                 -not -path "*/cmake-build-*/*" \
+                 -not -path "*/third_party/*" \
+                 -not -path "*/external/*" \
+                 -not -type l \
+                 -print0)
+    fi
+done
+
+echo "Found ${#files[@]} C/C++ files to format"
+
+# Format each file with progress
+count=0
+errors=0
+for file in "${files[@]}"; do
+    count=$((count + 1))
+    # Show progress every 10 files or for the last file
+    if [ $((count % 10)) -eq 0 ] || [ $count -eq ${#files[@]} ]; then
+        printf "\r[$count/${#files[@]}] Formatting: %-80s" "$(basename "$file")"
+    fi
+
+    # Format the file and capture any errors
+    if ! clang-format -i -style=file:"$dir/.clang-format" "$file" 2>/dev/null; then
+        printf "\nError formatting: $file\n"
+        errors=$((errors + 1))
+    fi
+done
+
+# Clear the progress line and show completion
+printf "\r%-100s\r" " "
+
+if [ $errors -gt 0 ]; then
+    echo "Completed with $errors errors"
+fi
+
+echo "C/C++ formatting complete"

+ 25 - 0
formatters/format-csharp.sh

@@ -0,0 +1,25 @@
+#!/bin/bash
+set -e
+
+# Format C# files with dotnet-format
+echo "Formatting C# files..."
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+
+if command -v dotnet-format &> /dev/null; then
+    # Copy .editorconfig to C# directories
+    cp .editorconfig ../spine-csharp/ 2>/dev/null || true
+    cp .editorconfig ../spine-monogame/ 2>/dev/null || true
+    cp .editorconfig ../spine-unity/ 2>/dev/null || true
+
+    dotnet-format ../spine-csharp/spine-csharp.sln || true
+    dotnet-format -f ../spine-monogame || true
+    dotnet-format -f ../spine-unity || true
+
+    # Clean up .editorconfig files
+    rm -f ../spine-csharp/.editorconfig
+    rm -f ../spine-monogame/.editorconfig
+    rm -f ../spine-unity/.editorconfig
+else
+    echo "Warning: dotnet-format not found. Skipping C# formatting."
+fi

+ 15 - 0
formatters/format-dart.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Format Dart files
+echo "Formatting Dart files..."
+
+if command -v dart &> /dev/null; then
+    find .. -name "*.dart" \
+        -not -path "*/.*" \
+        -not -path "*/node_modules/*" \
+        -not -path "*/build/*" \
+        -exec dart format {} +
+else
+    echo "Warning: dart not found. Skipping Dart formatting."
+fi

+ 15 - 0
formatters/format-haxe.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Format Haxe files
+echo "Formatting Haxe files..."
+
+if command -v haxelib &> /dev/null && haxelib list formatter &> /dev/null; then
+    find .. -name "*.hx" \
+        -not -path "*/.*" \
+        -not -path "*/node_modules/*" \
+        -not -path "*/build/*" \
+        | xargs haxelib run formatter -s
+else
+    echo "Warning: haxe formatter not found. Install with: haxelib install formatter"
+fi

+ 9 - 0
formatters/format-java.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+set -e
+
+# Format Java files with Spotless (keeping this for Eclipse formatter)
+echo "Formatting Java files..."
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+
+./formatters/gradlew -p formatters spotlessJavaApply --quiet

+ 15 - 0
formatters/format-swift.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+set -e
+
+# Format Swift files
+echo "Formatting Swift files..."
+
+if command -v swift-format &> /dev/null; then
+    find .. -name "*.swift" \
+        -not -path "*/.*" \
+        -not -path "*/build/*" \
+        -not -path "*/DerivedData/*" \
+        | xargs swift-format -i
+else
+    echo "Warning: swift-format not found. Install from https://github.com/apple/swift-format"
+fi

+ 18 - 0
formatters/format-ts.sh

@@ -0,0 +1,18 @@
+#!/bin/bash
+set -e
+
+# Format TypeScript files with Biome
+echo "Formatting TypeScript files..."
+
+dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
+
+# Check if biome.json files match
+if ! cmp -s ../spine-ts/biome.json ../tests/biome.json; then
+    echo -e "\033[1;31mERROR: spine-ts/biome.json and tests/biome.json differ!\033[0m"
+    echo -e "\033[1;31mPlease sync them to ensure consistent formatting.\033[0m"
+    exit 1
+fi
+
+# Format TypeScript files
+cd ../spine-ts && npx biome format --write . && cd ../formatters
+cd ../tests && npx biome format --write --config-path ../spine-ts . && cd ../formatters

+ 8 - 175
formatters/format.sh

@@ -94,200 +94,33 @@ while [[ $# -gt 0 ]]; do
     esac
     esac
 done
 done
 
 
-# Stay in formatters directory and use relative paths
-# cd $dir/..
-
-# Format C/C++ files with clang-format
+# Call individual formatter scripts
 if [ "$FORMAT_CPP" = true ]; then
 if [ "$FORMAT_CPP" = true ]; then
-    echo "Formatting C/C++ files..."
-    if [ ! -f "$dir/.clang-format" ]; then
-        echo "Error: .clang-format not found in formatters directory"
-        exit 1
-    fi
-
-    # Define C/C++ source directories - be specific to avoid engine sources
-    cpp_dirs=(
-        # spine-cpp
-        "../spine-cpp/include/spine"
-        "../spine-cpp/src/spine"
-        "../spine-cpp/spine-cpp-lite"
-        "../spine-cpp/tests"
-        
-        # spine-c
-        "../spine-c/include"
-        "../spine-c/src"
-        "../spine-c/src/generated"
-        "../spine-c/tests"
-        
-        # spine-godot
-        "../spine-godot/spine_godot"
-        
-        # spine-ue
-        "../spine-ue/Source/SpineUE"
-        "../spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Public"
-        "../spine-ue/Plugins/SpinePlugin/Source/SpinePlugin/Private"
-        "../spine-ue/Plugins/SpinePlugin/Source/SpineEditorPlugin/Public"
-        "../spine-ue/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private"
-        
-        # spine-glfw
-        "../spine-glfw/src"
-        "../spine-glfw/example"
-        
-        # spine-sdl
-        "../spine-sdl/src"
-        "../spine-sdl/example"
-        
-        # spine-sfml
-        "../spine-sfml/c/src/spine"
-        "../spine-sfml/c/example"
-        "../spine-sfml/cpp/src/spine"
-        "../spine-sfml/cpp/example"
-        
-        # spine-cocos2dx
-        "../spine-cocos2dx/spine-cocos2dx/src/spine"
-        "../spine-cocos2dx/example/Classes"
-        
-        # spine-ios
-        "../spine-ios/Sources/SpineCppLite"
-        "../spine-ios/Sources/SpineCppLite/include"
-        "../spine-ios/Sources/SpineShadersStructs"
-        "../spine-ios/Example/Spine iOS Example"
-        
-        # spine-flutter
-        "../spine-flutter/ios/Classes"
-        "../spine-flutter/macos/Classes"
-        "../spine-flutter/src"
-    )
-
-    # Collect all C/C++ files from specified directories
-    files=()
-    for cpp_dir in "${cpp_dirs[@]}"; do
-        if [ -d "$cpp_dir" ]; then
-            while IFS= read -r -d '' file; do
-                files+=("$file")
-            done < <(find "$cpp_dir" \( -name "*.c" -o -name "*.cpp" -o -name "*.h" \) \
-                     -not -path "*/.*" \
-                     -not -path "*/build/*" \
-                     -not -path "*/cmake-build-*/*" \
-                     -not -path "*/third_party/*" \
-                     -not -path "*/external/*" \
-                     -not -type l \
-                     -print0)
-        fi
-    done
-
-    echo "Found ${#files[@]} C/C++ files to format"
-
-    # Format each file with progress
-    count=0
-    errors=0
-    for file in "${files[@]}"; do
-        count=$((count + 1))
-        # Show progress every 10 files or for the last file
-        if [ $((count % 10)) -eq 0 ] || [ $count -eq ${#files[@]} ]; then
-            printf "\r[$count/${#files[@]}] Formatting: %-80s" "$(basename "$file")"
-        fi
-
-        # Format the file and capture any errors
-        if ! clang-format -i -style=file:"$dir/.clang-format" "$file" 2>/dev/null; then
-            printf "\nError formatting: $file\n"
-            errors=$((errors + 1))
-        fi
-    done
-
-    # Clear the progress line and show completion
-    printf "\r%-100s\r" " "
-    
-    if [ $errors -gt 0 ]; then
-        echo "Completed with $errors errors"
-    fi
-
-    echo "C/C++ formatting complete"
+    "$dir/format-cpp.sh"
 fi
 fi
 
 
-# Format Java files with Spotless (keeping this for Eclipse formatter)
 if [ "$FORMAT_JAVA" = true ]; then
 if [ "$FORMAT_JAVA" = true ]; then
-    echo "Formatting Java files..."
-    ./formatters/gradlew -p formatters spotlessJavaApply --quiet
+    "$dir/format-java.sh"
 fi
 fi
 
 
-# Format C# files with dotnet-format
 if [ "$FORMAT_CSHARP" = true ]; then
 if [ "$FORMAT_CSHARP" = true ]; then
-    echo "Formatting C# files..."
-    if command -v dotnet-format &> /dev/null; then
-        # Copy .editorconfig to C# directories
-        cp .editorconfig ../spine-csharp/ 2>/dev/null || true
-        cp .editorconfig ../spine-monogame/ 2>/dev/null || true
-        cp .editorconfig ../spine-unity/ 2>/dev/null || true
-
-        dotnet-format ../spine-csharp/spine-csharp.sln || true
-        dotnet-format -f ../spine-monogame || true
-        dotnet-format -f ../spine-unity || true
-
-        # Clean up .editorconfig files
-        rm -f ../spine-csharp/.editorconfig
-        rm -f ../spine-monogame/.editorconfig
-        rm -f ../spine-unity/.editorconfig
-    else
-        echo "Warning: dotnet-format not found. Skipping C# formatting."
-    fi
+    "$dir/format-csharp.sh"
 fi
 fi
 
 
-# Format TypeScript files with Biome
 if [ "$FORMAT_TS" = true ]; then
 if [ "$FORMAT_TS" = true ]; then
-    echo "Formatting TypeScript files..."
-    # Check if biome.json files match
-    if ! cmp -s ../spine-ts/biome.json ../tests/biome.json; then
-        echo -e "\033[1;31mERROR: spine-ts/biome.json and tests/biome.json differ!\033[0m"
-        echo -e "\033[1;31mPlease sync them to ensure consistent formatting.\033[0m"
-        exit 1
-    fi
-
-    # Format TypeScript files
-    cd ../spine-ts && npx biome format --write . && cd ../formatters
-    cd ../tests && npx biome format --write --config-path ../spine-ts . && cd ../formatters
+    "$dir/format-ts.sh"
 fi
 fi
 
 
-# Format Dart files
 if [ "$FORMAT_DART" = true ]; then
 if [ "$FORMAT_DART" = true ]; then
-    echo "Formatting Dart files..."
-    if command -v dart &> /dev/null; then
-        find .. -name "*.dart" \
-            -not -path "*/.*" \
-            -not -path "*/node_modules/*" \
-            -not -path "*/build/*" \
-            -exec dart format {} +
-    else
-        echo "Warning: dart not found. Skipping Dart formatting."
-    fi
+    "$dir/format-dart.sh"
 fi
 fi
 
 
-# Format Haxe files
 if [ "$FORMAT_HAXE" = true ]; then
 if [ "$FORMAT_HAXE" = true ]; then
-    echo "Formatting Haxe files..."
-    if command -v haxelib &> /dev/null && haxelib list formatter &> /dev/null; then
-        find .. -name "*.hx" \
-            -not -path "*/.*" \
-            -not -path "*/node_modules/*" \
-            -not -path "*/build/*" \
-            | xargs haxelib run formatter -s
-    else
-        echo "Warning: haxe formatter not found. Install with: haxelib install formatter"
-    fi
+    "$dir/format-haxe.sh"
 fi
 fi
 
 
-# Format Swift files
 if [ "$FORMAT_SWIFT" = true ]; then
 if [ "$FORMAT_SWIFT" = true ]; then
-    echo "Formatting Swift files..."
-    if command -v swift-format &> /dev/null; then
-        find .. -name "*.swift" \
-            -not -path "*/.*" \
-            -not -path "*/build/*" \
-            -not -path "*/DerivedData/*" \
-            | xargs swift-format -i
-    else
-        echo "Warning: swift-format not found. Install from https://github.com/apple/swift-format"
-    fi
+    "$dir/format-swift.sh"
 fi
 fi
 
 
 echo "Formatting complete!"
 echo "Formatting complete!"