Quellcode durchsuchen

Update gitignore, CI script, and repo metadata

Aaron Franke vor 4 Jahren
Ursprung
Commit
65c79f0a29
6 geänderte Dateien mit 38 neuen und 15 gelöschten Zeilen
  1. 2 0
      .gitattributes
  2. 0 2
      .github/FUNDING.yml
  3. 6 0
      .github/dependabot.yml
  4. 8 4
      .github/workflows/static_checks.yml
  5. 2 0
      .gitignore
  6. 20 9
      file_format.sh

+ 2 - 0
.gitattributes

@@ -0,0 +1,2 @@
+# Normalize EOL for all files that Git considers text files.
+* text=auto eol=lf

+ 0 - 2
.github/FUNDING.yml

@@ -1,2 +0,0 @@
-patreon: godotengine
-custom: https://godotengine.org/donate

+ 6 - 0
.github/dependabot.yml

@@ -0,0 +1,6 @@
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "daily"

+ 8 - 4
.github/workflows/ci.yml → .github/workflows/static_checks.yml

@@ -1,15 +1,19 @@
-name: Continuous integration
+name: Static Checks
 on: [push, pull_request]
 
 jobs:
-  build:
+  format:
+    name: File formatting (file_format.sh)
     runs-on: ubuntu-20.04
     steps:
       - name: Checkout
         uses: actions/checkout@v2
 
-      - name: Lint demo (format.sh)
+      - name: Install dependencies
         run: |
           sudo apt-get update -qq
           sudo apt-get install -qq dos2unix recode
-          bash ./format.sh
+
+      - name: File formatting checks (file_format.sh)
+        run: |
+          bash ./file_format.sh

+ 2 - 0
.gitignore

@@ -1,3 +1,5 @@
+# Godot 4+ specific ignores
+.godot/
 
 # Godot-specific ignores
 .import/

+ 20 - 9
format.sh → file_format.sh

@@ -1,27 +1,38 @@
 #!/usr/bin/env bash
 
+# This script ensures proper POSIX text file formatting and a few other things.
+
 set -uo pipefail
 IFS=$'\n\t'
 
 # Loops through all text files tracked by Git.
 git grep -zIl '' |
 while IFS= read -rd '' f; do
-    # Exclude csproj and hdr files.
+    # Exclude some types of files.
     if [[ "$f" == *"csproj" ]]; then
         continue
     elif [[ "$f" == *"hdr" ]]; then
         continue
     fi
-    # Ensures that files are UTF-8 formatted.
+    # Ensure that files are UTF-8 formatted.
     recode UTF-8 "$f" 2> /dev/null
-    # Ensures that files have LF line endings.
+    # Ensure that files have LF line endings and do not contain a BOM.
     dos2unix "$f" 2> /dev/null
-    # Ensures that files do not contain a BOM.
-    sed -i '1s/^\xEF\xBB\xBF//' "$f"
-    # Ensures that files end with newline characters.
-    tail -c1 < "$f" | read -r _ || echo >> "$f";
-    # Remove trailing space characters.
-    sed -z -i 's/\x20\x0A/\x0A/g' "$f"
+    # Remove trailing space characters and ensures that files end
+    # with newline characters. -l option handles newlines conveniently.
+    perl -i -ple 's/\s*$//g' "$f"
+    # Remove the character sequence "== true" if it has a leading space.
+    perl -i -pe 's/\x20== true//g' "$f"
+    # We don't want to change lines around braces in godot/tscn files.
+    if [[ "$f" == *"godot" ]]; then
+        continue
+    elif [[ "$f" == *"tscn" ]]; then
+        continue
+    fi
+    # Disallow empty lines after the opening brace.
+    sed -z -i 's/\x7B\x0A\x0A/\x7B\x0A/g' "$f"
+    # Disallow some empty lines before the closing brace.
+    sed -z -i 's/\x0A\x0A\x7D/\x0A\x7D/g' "$f"
 done
 
 git diff > patch.patch