95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| 
 | |
| ### Overhad preparation
 | |
| shopt -s extglob
 | |
| KBINDS="/usr/share/fuzzy-pokedex-dev/keybindings-preview"
 | |
| POKEDATA="/usr/share/fuzzy-pokedex-dev/pokeData"
 | |
| 
 | |
| ### Help 
 | |
| help() {
 | |
|     printf "\n%s\n%s\n\n" "Use fzf to search Pokemon stats" "Can optionally search by name"
 | |
| 	printf "%s\n\t%s\n\n" "EXAMPLE" "pokedex [pokemon name]"
 | |
| 	printf "%s\n" "OPTIONS"
 | |
| 	printf "%-25s\t%s\n" "  -q, --quick [pokemon]" "Prints single pokedex entry to terminal" \
 | |
| 		"  -u, --update [N/+N/-N/N%]" "Scrape web for updated Pokemon stats" "" "  WARNING: update function is resource heavy" "" "  See Parallel job control (-j) for options" "" "  Default is 200%" \
 | |
| 		"  -h, --help" "Print this help screen"
 | |
| 	printf "\n%s\n" "KEYBINDS"
 | |
| 	printf "%-15s\t%s\n" "  space" "Reads the Pokedex entry" \
 | |
| 		"  ctrl-space" "Stops reading the Pokedex entry" \
 | |
| 		"  ctrl-n" "Shows small sprite version" \
 | |
| 		"  ctrl-b" "Shows large sprite version" \
 | |
| 		"  ctrl-s" "Shows shiny sprite version" \
 | |
| 		"  ctrl-h" "Shows this help screen in preview window"
 | |
| 	printf "\n"
 | |
| }
 | |
| 
 | |
| ### Pokedex viewer using pokemon-colorscripts and fzf
 | |
| pokedex() {
 | |
| 	pokemon-colorscripts -l |
 | |
| 	fzf -q "$1" +m -s -i \
 | |
| 	--cycle \
 | |
| 	--reverse \
 | |
| 	--prompt=' ' \
 | |
| 	--pointer=' ' \
 | |
| 	--border=rounded \
 | |
| 	--border-label="╢ Fuzzy-Pokedex ╟" \
 | |
| 	--margin=4% \
 | |
| 	--padding=4% \
 | |
| 	--header="$(echo -e '  Choose a Pokemon to view info\n\t     ctrl+h to for help')" \
 | |
| 	--info=inline:'   ' \
 | |
|   	--color='fg+:15,fg:42,preview-fg:15,label:9,preview-label:15,hl+:134,hl:123,query:134,gutter:0,border:9,prompt:15,pointer:15,marker:15' \
 | |
| 	--tiebreak=begin,chunk,length \
 | |
| 	--preview="printf '\n\t\t\t\t\t%s\n\t\t\t\t\t    %s\n' 'Press space to hear entry' 'ctrl+space to stop'; pokemon-colorscripts -n {1} --no-title; cat $POKEDATA/{1}" \
 | |
| 	--preview-window=68%:wrap:border-rounded \
 | |
| 	--bind=focus:transform-preview-label:'echo [ {1} ] ' \
 | |
| 	--bind=ctrl-h:preview:"cat $KBINDS" \
 | |
| 	--bind=space:preview:"printf '\n\t\t\t\t %s\n\t\t\t\t\t   %s\n' 'Select another Pokemon to stop audio' 'Or press ctrl+space'; pokemon-colorscripts -n {1} --no-title; cat $POKEDATA/{1}; espeak-ng -f $POKEDATA/{1} -g 4 -p 50 -s 145 -l 250 -ven+m3 &" \
 | |
| 	--bind=ctrl-space:preview:"printf '\n\t\t\t\t\t%s\n\t\t\t\t\t   %s\n' 'Press space to hear entry' 'ctrl+space to stop'; pokemon-colorscripts -n {1} --no-title; cat $POKEDATA/{1};" \
 | |
| 	--bind=ctrl-b:preview:"echo; pokemon-colorscripts -b -n {1} --no-title; cat $POKEDATA/{1};" \
 | |
| 	--bind=ctrl-s:preview:"echo; pokemon-colorscripts -s -n {1} --no-title; cat $POKEDATA/{1};" \
 | |
| 	--bind=ctrl-n:preview:"printf '\n\t\t\t\t\t%s\n\t\t\t\t\t   %s\n' 'Press space to hear entry' 'ctrl+space to stop'; pokemon-colorscripts -n {1} --no-title; cat $POKEDATA/{1};" |
 | |
| 	parallel pokemon-colorscripts --no-title -n {} "&&" cat "$POKEDATA/{}" 
 | |
| }
 | |
| 
 | |
| ### Quick view returns single Pokemon stat instead of opening pokedex 
 | |
| quick_view() {
 | |
| 	parallel pokemon-colorscripts --no-title -n {} "&&" cat "$POKEDATA/{}" <<<"$1"
 | |
| }
 | |
| 
 | |
| ### Update Pokemon stats file set
 | |
| update_pokeData() {
 | |
| 	printf "\n\t\t%s\n\t%s\n\n" "WARNING!!!" "This WILL take a long time"
 | |
| 	pokemon-colorscripts -l | sort | parallel --progress --bar --color --retry-failed -j "${1:-200%}" pokeInfo {} ">" "$POKEDATA/{}" 2>&1
 | |
| }
 | |
| 
 | |
| if ! (( $# )); then
 | |
| 	pokedex
 | |
| fi
 | |
| 
 | |
| while (( $# )); do
 | |
|     arg=$1
 | |
| 	shift
 | |
|     case "$arg" in
 | |
| 		-q|--quick)
 | |
| 			quick_view "$1"
 | |
| 			shift
 | |
| 			;;
 | |
|     	-u|--update)
 | |
| 			update_pokeData "$1"
 | |
| 			shift
 | |
| 			;;
 | |
|     	-h|--help)
 | |
|     		help
 | |
|     		shift
 | |
|    			;;
 | |
|     	!(^-) )
 | |
|     		pokedex "$arg"
 | |
|     		shift
 | |
|     		;;			
 | |
|     	-* )
 | |
|     		echo "Invalid Usage"
 | |
|    			help
 | |
|    			;;
 | |
|     esac
 | |
| done
 |