mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'ci/pre-commit_windows_improvements' into 'master'
pre-commit: recognize Windows excecutable files with git See merge request espressif/esp-idf!11211
This commit is contained in:
commit
e0c9260976
@ -18,6 +18,8 @@ import argparse
|
||||
import os
|
||||
from sys import exit
|
||||
|
||||
from idf_ci_utils import is_executable
|
||||
|
||||
|
||||
def _strip_each_item(iterable):
|
||||
res = []
|
||||
@ -44,6 +46,8 @@ def check_executable_list():
|
||||
def check_executables(files):
|
||||
ret = 0
|
||||
for fn in files:
|
||||
if not is_executable(fn):
|
||||
continue
|
||||
if fn not in known_executables:
|
||||
print('"{}" is not in {}'.format(fn, EXECUTABLE_LIST_FN))
|
||||
ret = 1
|
||||
|
@ -19,6 +19,7 @@
|
||||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
IDF_PATH = os.getenv('IDF_PATH', os.path.join(os.path.dirname(__file__), '..', '..'))
|
||||
|
||||
@ -44,3 +45,27 @@ def get_submodule_dirs(full_path=False): # type: (bool) -> list
|
||||
logging.warning(str(e))
|
||||
|
||||
return dirs
|
||||
|
||||
|
||||
def _check_git_filemode(full_path): # type: (str) -> bool
|
||||
try:
|
||||
stdout = subprocess.check_output(['git', 'ls-files', '--stage', full_path]).strip().decode('utf-8')
|
||||
except subprocess.CalledProcessError:
|
||||
return True
|
||||
|
||||
mode = stdout.split(' ', 1)[0] # e.g. 100644 for a rw-r--r--
|
||||
if any([int(i, 8) & 1 for i in mode[-3:]]):
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def is_executable(full_path): # type: (str) -> bool
|
||||
"""
|
||||
os.X_OK will always return true on windows. Use git to check file mode.
|
||||
:param full_path: file full path
|
||||
:return: True is it's an executable file
|
||||
"""
|
||||
if sys.platform == 'win32':
|
||||
return _check_git_filemode(full_path)
|
||||
else:
|
||||
return os.access(full_path, os.X_OK)
|
||||
|
Loading…
Reference in New Issue
Block a user