Panel/Agent-Windows/OGP64/usr/share/mintty/emojis/getflags
2026-06-06 18:46:40 -04:00

164 lines
4.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! /bin/dash
# this script is 20% faster with dash than with bash
#############################################################################
# download function
download_noto () {
# download noto third-party region flags
if [ -d noto-emoji-flags ]
then if [ -d noto-emoji-flags/.git ]
then (cd noto-emoji-flags; git pull)
else echo WARNING: directory noto-emoji-flags already exists but no git config - Exit
exit 9
fi
else
notogit=https://github.com/googlefonts/noto-emoji
git clone --depth 1 -n --filter=blob:none $notogit noto-emoji-flags
(cd noto-emoji-flags
git sparse-checkout set --no-cone third_party/region-flags/png
git checkout
)
fi
(cd noto-emoji-flags; rm -f *.png; ln third_party/region-flags/png/*.png ./)
}
download_other () {
# download Puellanivis flag emojis
if [ -d puellanivis-flags ]
then if [ -d puellanivis-flags/.git ]
then (cd puellanivis-flags; git pull)
else echo WARNING: directory puellanivis-flags already exists but no git config - Exit
exit 9
fi
else
puelgit=https://github.com/puellanivis/emoji.git
git clone --depth 1 $puelgit puellanivis-flags
fi
(cd puellanivis-flags; rm -f *.png; ln flags/*.png flags/*/*.png ./)
}
download () {
download_noto
# drop download of old Google region flags
#git clone --depth 1 https://github.com/google/region-flags.git google-region-flags &&
#ln google-region-flags/png/*.png google-region-flags/
download_other
}
#############################################################################
# extract emoji files:
# pre-deploy them with proper filename, according to codepoint pattern
extract () {
mkdir -p common
for f in `ls *-flags/*.png`
do e=${f##*/}
e=${e%.png}
if [ -n "$BASH_VERSION" ]
then
e=${e//-}
e=${e//\'}
#else filter them out by missing case below
fi
case $e in
??) # 1F1E6 1F1E8 ; RGI_Emoji_Flag_Sequence
tagseq=false;;
*) # 1F3F4 E0067 E0062 E0065 E006E E0067 E007F; RGI_Emoji_Tag_Sequence; flag: England
tagseq=true;;
esac
if $tagseq
then n=1f3f4
else n=
fi
# speed-up possible by using a common sed script...
for l in $( echo "$e" | tr 'A-Z' 'a-z' | sed -e 's,.,& ,g' )
do d=$( printf %d "'$l'" )
if $tagseq
then case "$l" in
[a-z]|[0-9])
d=$(( $d + 917504 ))
n=$n-$( printf %x $d )
;;
#[a-z]) d=$(( $d - 97 + 917601 )) # 'a' -> U+E0061 ...
# n=$n-$( printf %x $d )
# ;;
#[0-9]) d=$(( $d - 48 + 917552 )) # '0' -> U+E0030 ...
# n=$n-$( printf %x $d )
# ;;
esac
else d=$(( $d - 97 + 127462 )) # U+1F1E6
n=$n-$( printf %x $d )
fi
done
if $tagseq
then n=$n-e007f.png
else n=${n#-}.png
fi
echo "$f -> common/$n"
if [ -L "$f" ]
then # linking a symbolic link while renaming the target
# would yield a dangling link, so copy it
cp "$f" "common/$n"
else ln "$f" "common/$n"
fi
done
}
#############################################################################
# perform download and extraction/deployment
case "$1" in
""|-h|--help)
echo "Usage: `basename $0` [-d | -e | -de]" >&2
echo >&2
echo "This script retrieves flag emojis from various sources." >&2
echo >&2
echo "Options:" >&2
echo " -d Download flags emojis repositories" >&2
echo " -n Download only Noto flags" >&2
echo " -e Extract emoji files with proper filenames into common/" >&2
echo " -de -d and -e" >&2
echo " -ne -n and -e" >&2
echo >&2
if [ `uname` = "Linux" ] && type wslpath 2> /dev/null 1>&2
then echo "Note: for direct deployment from WSL, first go into the common config directory:" >&2
echo ' cd `wslpath "$APPDATA/mintty/emojis"` || cd `wslpath "$APPDATA/wsltty/emojis"`' >&2
else echo "Note: for direct deployment, first go into subdirectory 'emojis' of one of the" >&2
echo "mintty config directories:" >&2
echo ' ~/.mintty' >&2
echo ' ~/.config/mintty' >&2
echo ' $APPDATA/mintty' >&2
echo ' /usr/share/mintty' >&2
fi
exit;;
-n|--download-noto)
download_noto
;;
-ne|--noto)
download_noto
extract
;;
-d|--download)
download
;;
-e|--extract)
extract
;;
-de|--all)
download
extract
;;
esac
#############################################################################
# end