mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-04 05:20:30 +00:00
Meta: Rewrite pre-commit script check-emoji in python
This reduces the scripts execution time from 0.57 seconds to 0.01 seconds, while also making the check a bit tighter, leaving fewer possible problems.
This commit is contained in:
parent
c4895b7d95
commit
88c8ad840d
Notes:
sideshowbarker
2024-07-17 06:51:15 +09:00
Author: https://github.com/BenWiederhake Commit: https://github.com/SerenityOS/serenity/commit/88c8ad840d Pull-request: https://github.com/SerenityOS/serenity/pull/15281 Reviewed-by: https://github.com/bgianfo ✅
3 changed files with 62 additions and 35 deletions
61
Meta/check-emoji.py
Executable file
61
Meta/check-emoji.py
Executable file
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
RE_INVALID_CHAR = re.compile('[^A-FU0-9+_]')
|
||||
RE_MISSING_UNDERSCORE = re.compile('[^_]U')
|
||||
RE_MISSING_LETTER_U = re.compile('_(?!U)')
|
||||
RE_MISSING_SIGN_PLUS = re.compile('U(?!\\+)')
|
||||
|
||||
|
||||
def any_problems_here():
|
||||
found_invalid_filenames = False
|
||||
for filename in os.listdir():
|
||||
if not filename.endswith('.png'):
|
||||
print(f'Non-png file {filename} does not belong in the emoji directory')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
filename = filename[:-len('.png')]
|
||||
if RE_INVALID_CHAR.search(filename):
|
||||
print(f'Filename {filename}.png contains invalid characters in its filename. Only uppercase letters'
|
||||
' A-F and U, numbers, +, and _ should be used.')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if 'U+0' in filename:
|
||||
print(f'Filename {filename}.png contains codepoint(s) with leading zeros. Leading zeros should be'
|
||||
' removed from codepoint(s).')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if '+U' in filename:
|
||||
print(f'Filename {filename}.png is incorrectly named. "_" should be used as a separator between'
|
||||
' codepoints, not "+".')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if RE_MISSING_UNDERSCORE.search(filename):
|
||||
print(f'Filename {filename}.png is missing an underscore "_" between codepoints.')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if RE_MISSING_LETTER_U.search(filename):
|
||||
print(f'Filename {filename}.png is either missing a "U" to indicate the start of a codepoint,'
|
||||
' or has a spurious underscore ("_").')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if RE_MISSING_SIGN_PLUS.search(filename):
|
||||
print(f'Filename {filename}.png is either missing a "+" after a "U", or has a spurious "U".')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
if 'U+FE0F' in filename:
|
||||
print(f'Filename {filename}.png should not include any emoji presentation selectors. U+FE0F codepoints'
|
||||
' should be removed from the filename.')
|
||||
found_invalid_filenames = True
|
||||
break
|
||||
|
||||
return found_invalid_filenames
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.chdir(os.path.dirname(__file__) + "/../Base/res/emoji/")
|
||||
if any_problems_here():
|
||||
sys.exit(1)
|
|
@ -1,34 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
||||
cd "${script_path}/.."
|
||||
|
||||
files=()
|
||||
for file in Base/res/emoji/*.png; do
|
||||
files+=("${file}")
|
||||
done
|
||||
|
||||
found_invalid_filenames=0
|
||||
for fn in "${files[@]}"; do
|
||||
basename=$(basename "$fn" .png)
|
||||
if [[ $basename =~ [^A-Z0-9+_] ]] ; then
|
||||
echo "$fn contains invalid characters in its filename. Only uppercase letters, numbers, +, and _ should be used."
|
||||
found_invalid_filenames=1
|
||||
fi
|
||||
if [[ $basename == *U+0* ]] ; then
|
||||
echo "$fn contains codepoint(s) with leading zeros. Leading zeros should be removed from codepoint(s)."
|
||||
found_invalid_filenames=1
|
||||
fi
|
||||
if [[ $basename == *+U* ]] ; then
|
||||
echo "$fn is incorrectly named. _ should be used as a separator between codepoints, not +."
|
||||
found_invalid_filenames=1
|
||||
fi
|
||||
if [[ $basename == *_U+FE0F* ]] ; then
|
||||
echo "$fn should not include any emoji presentation selectors. U+FE0F codepoints should be removed from the filename."
|
||||
found_invalid_filenames=1
|
||||
fi
|
||||
done
|
||||
|
||||
exit $found_invalid_filenames
|
|
@ -22,7 +22,7 @@ set +e
|
|||
for cmd in \
|
||||
Meta/check-ak-test-files.sh \
|
||||
Meta/check-debug-flags.sh \
|
||||
Meta/check-emoji.sh \
|
||||
Meta/check-emoji.py \
|
||||
Meta/check-markdown.sh \
|
||||
Meta/check-newlines-at-eof.py \
|
||||
Meta/check-png-sizes.sh \
|
||||
|
|
Loading…
Reference in a new issue