You've already forked nerd-fonts
							
							
				mirror of
				https://github.com/ryanoasis/nerd-fonts.git
				synced 2025-10-30 23:43:47 +02:00 
			
		
		
		
	Moves build related shell scripts to bin/scripts
This commit is contained in:
		
							
								
								
									
										27
									
								
								bin/scripts/build-latest-py3-version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								bin/scripts/build-latest-py3-version.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # project: Nerd Fonts (https://github.com/ryanoasis/nerd-fonts) | ||||||
|  | # version: 0.9.0 | ||||||
|  | # Executes the 2to3 conversion to generate latest py3 version of font patcher | ||||||
|  |  | ||||||
|  | # Check for 2to3 | ||||||
|  | type 2to3 >/dev/null 2>&1 || { | ||||||
|  |   echo >&2 "# 2to3 must be installed before running this script." | ||||||
|  |   echo >&2 "# Please see details at" | ||||||
|  |   echo >&2 "# https://docs.python.org/2/library/2to3.html" | ||||||
|  |   exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # -x unicode: ignore changing unicode to str | ||||||
|  | # purpose: to prevent 2to3 by default from changing 'unicode' to 'str' | ||||||
|  | # because in FontForge 'str' is not an attribute of the glyph object | ||||||
|  | # for more information: | ||||||
|  | # see: https://docs.python.org/2/library/2to3.html#to3-fixers | ||||||
|  | # see: https://github.com/ryanoasis/nerd-fonts/issues/49 | ||||||
|  | # see: https://github.com/ryanoasis/nerd-fonts/issues/79 | ||||||
|  | 2to3 -x unicode -n -w ../font-patcher --add-suffix=-py3 | ||||||
|  |  | ||||||
|  | # fix environment (first line in file) | ||||||
|  | # from `/usr/bin/env python2` when it should | ||||||
|  | # be `/usr/bin/env python3` | ||||||
|  | # using 1 as line number and '%' as delimiter: | ||||||
|  | sed -i '1s%.*%#!/usr/bin/env python3%' ../../font-patcher-py3 | ||||||
							
								
								
									
										185
									
								
								bin/scripts/gotta-patch-em-all-font-patcher!.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										185
									
								
								bin/scripts/gotta-patch-em-all-font-patcher!.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,185 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # version: 0.9.0 | ||||||
|  |  | ||||||
|  | # Check for Fontforge | ||||||
|  | type fontforge >/dev/null 2>&1 || { | ||||||
|  |   echo >&2 "# FontForge must be installed before running this script." | ||||||
|  |   echo >&2 "# Please see installation instructions at" | ||||||
|  |   echo >&2 "# http://designwithfontforge.com/en-US/Installing_Fontforge.html" | ||||||
|  |   exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | res1=$(date +%s) | ||||||
|  | parent_dir="${PWD}/../../" | ||||||
|  | # Set source and target directories | ||||||
|  | source_fonts_dir="${PWD}/../../src/unpatched-fonts" | ||||||
|  | patched_fonts_dir="${PWD}/../../patched-fonts" | ||||||
|  | like_pattern='' | ||||||
|  | complete_variation_count=0 | ||||||
|  | total_variation_count=0 | ||||||
|  | total_count=0 | ||||||
|  | last_parent_dir="" | ||||||
|  | unpatched_parent_dir="bin/scripts/../../src/unpatched-fonts" | ||||||
|  | patched_parent_dir="patched-fonts" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | if [ $# -eq 1 ] | ||||||
|  |   then | ||||||
|  |     like_pattern=$1 | ||||||
|  |     echo "# Parameter given, limiting search and patch to pattern '$like_pattern' given" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | # correct way to output find results into an array (when files have space chars, etc) | ||||||
|  | # source: http://stackoverflow.com/questions/8213328/bash-script-find-output-to-array | ||||||
|  | source_fonts=() | ||||||
|  |  while IFS= read -d $'\0' -r file ; do | ||||||
|  |      source_fonts=("${source_fonts[@]}" "$file") | ||||||
|  |  done < <(find "$source_fonts_dir" -name "$like_pattern*.[o,t]tf" -type f -print0) | ||||||
|  |  | ||||||
|  | # print total number of source fonts found | ||||||
|  | echo "# Total source fonts found: ${#source_fonts[*]}" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function patch_font { | ||||||
|  |   local f=$1; shift | ||||||
|  |   echo "f $f" | ||||||
|  |   echo "basename $(basename $f)" | ||||||
|  |   echo "dirname $(dirname $f)" | ||||||
|  |   echo pwd | ||||||
|  |   ## take everything before the last slash (/) to start building the full path | ||||||
|  |   #echo "patched_font_dir $patched_font_dir" | ||||||
|  |   local patched_font_dir="${f%/*}/" | ||||||
|  |   echo "patched_font_dir $patched_font_dir" | ||||||
|  |   #local patched_font_dir="${patched_font_dir/../../unpatched-fonts/patched-fonts}" | ||||||
|  |   #echo "patched_font_dir $patched_font_dir" | ||||||
|  |   # find replace unpatched parent dir with patched parent dir: | ||||||
|  |   local patched_font_dir="${patched_font_dir/$unpatched_parent_dir/$patched_parent_dir}" | ||||||
|  |   echo "patched_font_dir $patched_font_dir" | ||||||
|  |   [[ -d "$patched_font_dir" ]] || mkdir -p "$patched_font_dir" | ||||||
|  |  | ||||||
|  |   config_parent_dir=$( cd "$( dirname "$f" )" && cd ".." && pwd) | ||||||
|  |   config_dir=$( cd "$( dirname "$f" )" && pwd) | ||||||
|  |   config_parent_dir_name=$(basename $config_parent_dir) | ||||||
|  |   #is_unpatched_fonts_root=$("$config_parent_dir_name" == "unpatched-fonts") | ||||||
|  |   is_unpatched_fonts_root=0 | ||||||
|  |   echo "config_parent_dir_name $config_parent_dir_name" | ||||||
|  |  | ||||||
|  |   if [ "$config_parent_dir_name" == "unpatched-fonts" ] | ||||||
|  |   then | ||||||
|  |     echo "ITS ROOT" | ||||||
|  |     is_unpatched_fonts_root=1 | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   echo "is_unpatched_fonts_root $is_unpatched_fonts_root" | ||||||
|  |  | ||||||
|  |   # source the font config file if exists: | ||||||
|  |   if [ -f "$config_dir/config.cfg" ] | ||||||
|  |   then | ||||||
|  |     source "$config_dir/config.cfg" | ||||||
|  |   elif [ -f "$config_parent_dir/config.cfg" ] | ||||||
|  |   then | ||||||
|  |     source "$config_parent_dir/config.cfg" | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   if [ "$config_has_powerline" ] | ||||||
|  |   then | ||||||
|  |     powerline="" | ||||||
|  |     combinations=$(printf "./font-patcher ${f##*/} %s\n" {' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}) | ||||||
|  |   else | ||||||
|  |     powerline="--powerline" | ||||||
|  |     combinations=$(printf "./font-patcher ${f##*/} %s\n" {' --powerline',}{' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}) | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   echo "f ${f}" | ||||||
|  |   echo "output to ${patched_font_dir}complete/" | ||||||
|  |  | ||||||
|  |   cd "$parent_dir" | ||||||
|  |  | ||||||
|  |   fontforge -quiet -script ./font-patcher "$f" -q -s $powerline --complete --outputdir "${patched_font_dir}complete/" 2>/dev/null & | ||||||
|  |   fontforge -quiet -script ./font-patcher "$f" -q -w $powerline --complete --outputdir "${patched_font_dir}complete/" 2>/dev/null & | ||||||
|  |   fontforge -quiet -script ./font-patcher "$f" -q -s -w $powerline --complete --outputdir "${patched_font_dir}complete/" 2>/dev/null & | ||||||
|  |   #wait | ||||||
|  |  | ||||||
|  |   complete_variation_count=$((complete_variation_count+3)) | ||||||
|  |   combination_count=$(printf "%s" "$combinations" | wc -l) | ||||||
|  |  | ||||||
|  |   # generate the readmes: | ||||||
|  |  | ||||||
|  |   # if first time with this font then re-build parent dir readme, else skip: | ||||||
|  |   if [[ $config_parent_dir != "$last_parent_dir"  && (! $is_unpatched_fonts_root) ]]; | ||||||
|  |   then | ||||||
|  |     echo "config_parent_dir $config_parent_dir" | ||||||
|  |     echo "last_parent_dir $last_parent_dir" | ||||||
|  |     echo "Re-generate parent directory readme" | ||||||
|  |     generate_readme "$patched_font_dir/.." | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   generate_readme "$patched_font_dir" | ||||||
|  |  | ||||||
|  |   last_parent_dir=$config_parent_dir | ||||||
|  |  | ||||||
|  |   total_variation_count=$((total_variation_count+combination_count)) | ||||||
|  |   total_count=$((complete_variation_count+combination_count)) | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Re-generate all the readmes | ||||||
|  | # $1 = fontdir path | ||||||
|  | function generate_readme { | ||||||
|  |   patched_font_dir=$1 | ||||||
|  |   combinations_filename="$patched_font_dir/readme.md" | ||||||
|  |   font_info="$patched_font_dir/font-info.md" | ||||||
|  |  | ||||||
|  |   # clear output file (needed for multiple runs or updates): | ||||||
|  |   > "$combinations_filename" | ||||||
|  |  | ||||||
|  |   if [ -f font_info ]; | ||||||
|  |   then | ||||||
|  |     cat "$patched_font_dir/font-info.md" >> "$combinations_filename" | ||||||
|  |   else | ||||||
|  | 	  echo "# Could not append font-info.md (file not found). Was standardize script run? It should be executed first" | ||||||
|  |   fi | ||||||
|  |  | ||||||
|  |   cat "$parent_dir/src/readme-per-directory-variations.md" >> "$combinations_filename" | ||||||
|  |  | ||||||
|  |   # add to the file | ||||||
|  |   { | ||||||
|  |     printf "\`\`\`sh" | ||||||
|  |     printf "\n# %s Possible Combinations:\n" "$combination_count" | ||||||
|  |     printf "\n" | ||||||
|  |     printf "%s" "$combinations" | ||||||
|  |     printf "\n" | ||||||
|  |     printf "\`\`\`" | ||||||
|  |   } >> "$combinations_filename" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | # Use for loop iterate through source fonts | ||||||
|  | # $f stores current value | ||||||
|  | for f in "${source_fonts[@]}" | ||||||
|  | do | ||||||
|  | 	#echo "patch $f" | ||||||
|  |    patch_font "$f" | ||||||
|  |  | ||||||
|  |   # un-comment to test this script (patch 1 font) | ||||||
|  |   #break | ||||||
|  |   # wait for this set of bg commands to finish: dont do too many at once! | ||||||
|  |   #wait | ||||||
|  | done | ||||||
|  | # wait for all bg commands to finish | ||||||
|  | wait | ||||||
|  |  | ||||||
|  | res2=$(date +%s) | ||||||
|  | dt=$(echo "$res2 - $res1" | bc) | ||||||
|  | dd=$(echo "$dt/86400" | bc) | ||||||
|  | dt2=$(echo "$dt-86400*$dd" | bc) | ||||||
|  | dh=$(echo "$dt2/3600" | bc) | ||||||
|  | dt3=$(echo "$dt2-3600*$dh" | bc) | ||||||
|  | dm=$(echo "$dt3/60" | bc) | ||||||
|  | ds=$(echo "$dt3-60*$dm" | bc) | ||||||
|  |  | ||||||
|  | printf "# Total runtime: %d:%02d:%02d:%02d\n" "$dd" "$dh" "$dm" "$ds" | ||||||
|  |  | ||||||
|  | printf "# All fonts patched to sub-directories in '%s'\n" "$patched_parent_dir" | ||||||
|  | printf "# The total number of 'variation' patched fonts created was '%s'\n" "$total_variation_count" | ||||||
|  | printf "# The total number of 'complete' patched fonts created was '%s'\n" "$complete_variation_count" | ||||||
|  | printf "# The total number of patched fonts created was '%s'\n" "$total_count" | ||||||
							
								
								
									
										83
									
								
								bin/scripts/standardize-and-complete-readmes.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										83
									
								
								bin/scripts/standardize-and-complete-readmes.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,83 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # version: 0.9.0 | ||||||
|  | # Iterates over all patched fonts directories | ||||||
|  | # converts all non markdown readmes to markdown (e.g., txt, rst) using pandoc | ||||||
|  | # adds information on additional-variations and complete font variations | ||||||
|  |  | ||||||
|  | infofilename="font-info.md" | ||||||
|  | unpatched_parent_dir="src/unpatched-fonts" | ||||||
|  | patched_parent_dir="patched-fonts" | ||||||
|  |  | ||||||
|  | cd ../../src/unpatched-fonts/ || { | ||||||
|  |   echo >&2 "# Could not find source fonts directory" | ||||||
|  |   exit 1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #find ./ProFont -type d | # uncomment to test 1 font | ||||||
|  | #find ./DejaVuSansMono -type d | # uncomment to test 1 font | ||||||
|  | find . -type d | # uncomment to do ALL fonts | ||||||
|  | while read -r filename | ||||||
|  | do | ||||||
|  |  | ||||||
|  | 	dirname=$(dirname "$filename") | ||||||
|  | 	searchdir=$filename | ||||||
|  |  | ||||||
|  | 	# limit looking for the readme files in the parent dir not the child dirs: | ||||||
|  | 	if [[ $dirname != "." ]]; | ||||||
|  | 	then | ||||||
|  | 		searchdir=$dirname | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	RST=( $(find "$searchdir" -type f -iname 'readme.rst') ) | ||||||
|  | 	TXT=( $(find "$searchdir" -type f -iname 'readme.txt') ) | ||||||
|  | 	outputdir=$PWD/../../patched-fonts/$filename/ | ||||||
|  |  | ||||||
|  | 	echo "# Generating readme for: $filename" | ||||||
|  |  | ||||||
|  | 	[[ -d "$outputdir" ]] || mkdir -p "$outputdir" | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	if [ "${RST[0]}" ]; | ||||||
|  | 	then | ||||||
|  | 		for i in "${RST[@]}" | ||||||
|  | 		do | ||||||
|  | 			echo "## Found RST" | ||||||
|  |  | ||||||
|  | 			from="$PWD/$i" | ||||||
|  | 			from_dir=$(dirname "$from") | ||||||
|  | 			to_dir="${from_dir/$unpatched_parent_dir/$patched_parent_dir}" | ||||||
|  | 			to="${to_dir}/$infofilename" | ||||||
|  |  | ||||||
|  | 			[[ -d "$to_dir" ]] || mkdir -p "$to_dir" | ||||||
|  | 			# clear output file (needed for multiple runs or updates): | ||||||
|  | 			> "$to" 2> /dev/null | ||||||
|  |  | ||||||
|  | 			pandoc "$from" --from=rst --to=markdown --output="$to" | ||||||
|  |  | ||||||
|  | 			cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to" | ||||||
|  | 		done | ||||||
|  |  | ||||||
|  | 	elif [ "${TXT[0]}" ]; | ||||||
|  | 	then | ||||||
|  | 		for i in "${TXT[@]}" | ||||||
|  | 		do | ||||||
|  | 			echo "## Found TXT" | ||||||
|  |  | ||||||
|  | 			from="$PWD/$i" | ||||||
|  | 			from_dir=$(dirname "$from") | ||||||
|  | 			to_dir="${from_dir/$unpatched_parent_dir/$patched_parent_dir}" | ||||||
|  | 			to="${to_dir}/$infofilename" | ||||||
|  |  | ||||||
|  | 			[[ -d "$to_dir" ]] || mkdir -p "$to_dir" | ||||||
|  | 			# clear output file (needed for multiple runs or updates): | ||||||
|  | 			> "$to" 2> /dev/null | ||||||
|  |  | ||||||
|  | 			cp "$from" "$to" | ||||||
|  |  | ||||||
|  | 			cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to" | ||||||
|  | 		done | ||||||
|  | 	else | ||||||
|  | 		echo "# Did not find RST nor TXT" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | done | ||||||
		Reference in New Issue
	
	Block a user