Skip to content

Commit 3b87b57

Browse files
committed
Update pre-commit hook
Add pre-commit hook to prevent committing .zip files
1 parent b13b468 commit 3b87b57

File tree

5 files changed

+60
-1
lines changed

5 files changed

+60
-1
lines changed

.pre-commit-config.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,4 +1433,9 @@ repos:
14331433
pass_filenames: false
14341434
files: ^airflow/migrations/versions/.*\.py$|^docs/apache-airflow/migrations-ref\.rst$
14351435
additional_dependencies: ['rich>=12.4.4']
1436+
- id: check-zip-files
1437+
name: Forbid committing .zip files
1438+
entry: python ./scripts/ci/pre_commit/check_zip_files.py
1439+
language: python
1440+
files: \.zip$
14361441
## ONLY ADD PRE-COMMITS HERE THAT REQUIRE CI IMAGE

contributing-docs/08_static_code_checks.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ require Breeze Docker image to be built locally.
250250
+-----------------------------------------------------------+--------------------------------------------------------+---------+
251251
| check-xml | Check XML files with xmllint | |
252252
+-----------------------------------------------------------+--------------------------------------------------------+---------+
253+
| check-zip-files | Forbid committing .zip files | * |
254+
+-----------------------------------------------------------+--------------------------------------------------------+---------+
253255
| codespell | Run codespell | |
254256
+-----------------------------------------------------------+--------------------------------------------------------+---------+
255257
| compile-ui-assets | Compile ui assets (manual) | |
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8b916a8eceeecdae4936ee72ec060491
1+
6bb06b6e0cf75f8c01e2a1727edf4515

dev/breeze/src/airflow_breeze/pre_commit_ids.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
"check-urlparse-usage-in-code",
9191
"check-usage-of-re2-over-re",
9292
"check-xml",
93+
"check-zip-files",
9394
"codespell",
9495
"compile-ui-assets",
9596
"compile-ui-assets-dev",
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python3
2+
# Licensed to the Apache Software Foundation (ASF) under one
3+
# or more contributor license agreements. See the NOTICE file
4+
# distributed with this work for additional information
5+
# regarding copyright ownership. The ASF licenses this file
6+
# to you under the Apache License, Version 2.0 (the
7+
# "License"); you may not use this file except in compliance
8+
# with the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing,
13+
# software distributed under the License is distributed on an
14+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
# KIND, either express or implied. See the License for the
16+
# specific language governing permissions and limitations
17+
# under the License.
18+
from __future__ import annotations
19+
20+
import subprocess
21+
import sys
22+
23+
24+
def get_staged_files():
25+
"""Return a list of files that are staged for commit."""
26+
result = subprocess.run(
27+
["git", "diff", "--cached", "--name-only"],
28+
capture_output=True,
29+
text=True,
30+
)
31+
if result.returncode != 0:
32+
print("Error: Unable to retrieve staged files.", file=sys.stderr)
33+
sys.exit(1)
34+
return result.stdout.splitlines()
35+
36+
37+
def main():
38+
staged_files = get_staged_files()
39+
# Look for any file ending with .zip (case-insensitive)
40+
zip_files = [f for f in staged_files if f.lower().endswith(".zip")]
41+
if zip_files:
42+
print("Error: Committing .zip files is not allowed.")
43+
print("The following .zip file(s) were found in your staged changes:")
44+
for file in zip_files:
45+
print(" -", file)
46+
sys.exit(1)
47+
sys.exit(0)
48+
49+
50+
if __name__ == "__main__":
51+
main()

0 commit comments

Comments
 (0)