29 lines
853 B
Bash
29 lines
853 B
Bash
|
#!/bin/bash
|
||
|
set -o errexit -o nounset -o pipefail
|
||
|
cd "$(dirname "$0")/.."
|
||
|
|
||
|
glyphs_file=${FIRACODE_GLYPHS_FILE:-"FiraCode.glyphs"}
|
||
|
|
||
|
code_blocks=()
|
||
|
|
||
|
for feat in "$@"; do
|
||
|
|
||
|
file="features/${feat}.fea"
|
||
|
if [ ! -f "${file}" ]; then
|
||
|
echo "Error: No file for feature ${feat} found!" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# don't grab the "lookup" surroundings or comments or whitespace lines
|
||
|
code="$(grep -v '^[[:space:]]*lookup\|^[[:space:]]*}\|^[[:space:]]*#\|^[[:space:]]*$' "${file}")" \
|
||
|
|| { echo "Error: No code for feature ${feat} found!" >&2; exit 1; }
|
||
|
|
||
|
code_blocks+=("$(tr '\n' ' ' <<< "${code}")")
|
||
|
done
|
||
|
|
||
|
# code block is one line above name declaration
|
||
|
linenum=$(sed -n "/name = calt;/=" "${glyphs_file}")
|
||
|
linenum=$((linenum - 1))
|
||
|
# replace end of line (";) with code on specified line number
|
||
|
sed -i -e "${linenum}s@\";\$@\n${code_blocks[*]}\";@" "${glyphs_file}"
|