nerd-fonts/bin/scripts/generate-css.sh
Fini Jastrow a67edd47dd generate-css: Generate full cheat sheet file [skip ci]
[why]
The script just creates the 'database' or the cheat sheet, but the
surrounding elements have to be added manually.

We do not like 'manually'.

[how]
Take the current cheat sheet code and rip top and bottom off, to glue it
to the generated 'database'.

Also change the filename like the final file would be named.

Well this is still not automated, but at least this is the first step in
that direction.

On the GH pages, there release and everyting is manual at the moment.

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-11 19:56:37 +02:00

98 lines
2.6 KiB
Bash
Executable file

#!/usr/bin/env bash
# Nerd Fonts Version: 2.2.2
# Script Version: 1.2.0
# Generates CSS file for the font and cheat sheet code
# shellcheck disable=SC1091
source ./lib/i_all.sh
output_css_file="../../css/nerd-fonts-generated.css"
output_css_min_file="../../css/nerd-fonts-generated.min.css"
header_css_file="./data/css-header.txt"
header_css_min_file="./data/css-min-header.txt"
if [ ! -d "../../temp" ]; then
mkdir "../../temp"
fi
output_cheat_sheet_file="../../temp/2017-01-04-icon-cheat-sheet.md"
cheat_sheet_head_file="./data/cheatsheet-head.txt"
cheat_sheet_foot_file="./data/cheatsheet-foot.txt"
LINE_PREFIX="# [Nerd Fonts] "
version="2.2.2"
# clear files
true > "$output_css_file" 2> /dev/null
true > "$output_css_min_file" 2> /dev/null
true > "$output_cheat_sheet_file" 2> /dev/null
# describe how the classes were established
{
printf "/*\\n"
printf " *%s Website: https://www.nerdfonts.com\\n" "$LINE_PREFIX"
printf " *%s Development Website: https://github.com/ryanoasis/nerd-fonts\\n" "$LINE_PREFIX"
printf " *%s Version: %s\\n" "$LINE_PREFIX" "$version"
printf " *%s The following is generated from the build script\\n" "$LINE_PREFIX"
printf " */\\n"
} | tee "$output_css_min_file" >> "$output_css_file"
# add top section of CSS
{
printf "\\n"
cat "$header_css_file"
} >> "$output_css_file"
cat "$header_css_min_file" | tr -d '\n' >> "$output_css_min_file"
cat "$cheat_sheet_head_file" > "$output_cheat_sheet_file"
echo;
# shellcheck disable=SC2154
# we know the '$i' is from the sourced file
for var in "${!i@}"; do
# trim 'i_' prefix
glyph_name=${var#*_}
# replace _ with -
glyph_name=${glyph_name/_/-}
glyph_char=${!var}
glyph_code=$(printf "%x" "'$glyph_char'")
#echo "$var=${!var}"
#echo "$glyph_name"
#echo "$glyph_char"
#echo "$glyph_code"
#printf "%x" "'$glyph_char'"
# generate css rules
{
printf ".nf-%s:before {" "$glyph_name"
printf "\\n"
printf " content: \"\\%s\";" "$glyph_code"
printf "\\n"
printf "}"
printf "\\n"
} >> "$output_css_file"
# generate css min rules
{
printf ".nf-%s:before{content:\"\\%s\"}" "$glyph_name" "$glyph_code"
} >> "$output_css_min_file"
# generate HTML cheat sheet
{
printf " <div class=\"column\">"
printf "\\n"
printf " <div class=\"nf nf-%s center\"></div>" "$glyph_name"
printf "\\n"
printf " <div class=\"class-name\">nf-%s</div><div class=\"codepoint\">%s</div>" "$glyph_name" "$glyph_code"
printf "\\n"
printf " </div>"
printf "\\n"
} >> "$output_cheat_sheet_file"
done
cat "$cheat_sheet_foot_file" >> "$output_cheat_sheet_file"
printf "Generated CSS and Cheat Sheet HTML\\n"