summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMeta/check-emoji.py61
-rwxr-xr-xMeta/check-emoji.sh34
-rwxr-xr-xMeta/lint-ci.sh2
3 files changed, 62 insertions, 35 deletions
diff --git a/Meta/check-emoji.py b/Meta/check-emoji.py
new file mode 100755
index 0000000000..e01bbbf38d
--- /dev/null
+++ b/Meta/check-emoji.py
@@ -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)
diff --git a/Meta/check-emoji.sh b/Meta/check-emoji.sh
deleted file mode 100755
index 5d71c501c4..0000000000
--- a/Meta/check-emoji.sh
+++ /dev/null
@@ -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
diff --git a/Meta/lint-ci.sh b/Meta/lint-ci.sh
index d4bd1de5a4..24be842c0f 100755
--- a/Meta/lint-ci.sh
+++ b/Meta/lint-ci.sh
@@ -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 \