summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-08-29 12:41:53 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-08-29 12:41:53 +0200
commit5b5471e30a8885b309625529a10941613fefc48f (patch)
tree63806ccdab1045d3274b877e696391a98cb4fdc9
parent76d318dbd13bd09a9690c0b459cb30f9ab6903f0 (diff)
parent7ea171adca8d28d10aae68cfe8f36094683bc491 (diff)
downloadredot-engine-5b5471e30a8885b309625529a10941613fefc48f.tar.gz
Merge pull request #78908 from zorbathut/pr_gitignore
Add static check for overzealous .gitignores and fix an example of such.
-rw-r--r--.github/workflows/static_checks.yml5
-rw-r--r--misc/scripts/gitignore_check.sh26
-rw-r--r--platform/android/java/editor/src/.gitignore1
3 files changed, 32 insertions, 0 deletions
diff --git a/.github/workflows/static_checks.yml b/.github/workflows/static_checks.yml
index b47ef135a2..c096c63f9b 100644
--- a/.github/workflows/static_checks.yml
+++ b/.github/workflows/static_checks.yml
@@ -41,6 +41,11 @@ jobs:
files=$(echo "$files" | grep -v 'thirdparty' | xargs -I {} sh -c 'echo "./{}"' | tr '\n' ' ')
echo "CHANGED_FILES=$files" >> $GITHUB_ENV
+ # This needs to happen before Python and npm execution; it must happen before any extra files are written.
+ - name: .gitignore checks (gitignore_check.sh)
+ run: |
+ bash ./misc/scripts/gitignore_check.sh
+
- name: File formatting checks (file_format.sh)
run: |
bash ./misc/scripts/file_format.sh changed.txt
diff --git a/misc/scripts/gitignore_check.sh b/misc/scripts/gitignore_check.sh
new file mode 100644
index 0000000000..f162e25391
--- /dev/null
+++ b/misc/scripts/gitignore_check.sh
@@ -0,0 +1,26 @@
+set -uo pipefail
+shopt -s globstar
+
+echo -e ".gitignore validation..."
+
+# Get a list of files that exist in the repo but are ignored.
+
+# The --verbose flag also includes files un-ignored via ! prefixes.
+# We filter those out with a somewhat awkward `awk` directive.
+ # (Explanation: Split each line by : delimiters,
+ # see if the actual gitignore line shown in the third field starts with !,
+ # if it doesn't, print it.)
+
+# ignorecase for the sake of Windows users.
+
+output=$(git -c core.ignorecase=true check-ignore --verbose --no-index **/* | \
+ awk -F ':' '{ if ($3 !~ /^!/) print $0 }')
+
+# Then we take this result and return success if it's empty.
+if [ -z "$output" ]; then
+ exit 0
+else
+ # And print the result if it isn't.
+ echo "$output"
+ exit 1
+fi
diff --git a/platform/android/java/editor/src/.gitignore b/platform/android/java/editor/src/.gitignore
new file mode 100644
index 0000000000..c081ec3425
--- /dev/null
+++ b/platform/android/java/editor/src/.gitignore
@@ -0,0 +1 @@
+!/debug