diff --git a/PKGBUILD b/PKGBUILD index 77728b9..28bca23 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -25,7 +25,6 @@ package() { cd "$srcdir/${pkgname:0:-4}" install -Dm666 pokeData/* -t "$pkgdir/usr/share/$pkgname/pokeData" install -Dm666 keybindings-preview -t "$pkgdir/usr/share/$pkgname" - install -Dm755 pokeParse -t "$pkgdir/usr/bin" install -Dm755 pokeUpdate -t "$pkgdir/usr/bin" install -Dm755 pokedex-dev -t "$pkgdir/usr/bin" } diff --git a/pokeParse b/pokeParse deleted file mode 100755 index 4ad8ab0..0000000 --- a/pokeParse +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -### Assign first arg as pokemon -POKEMON="$1" - -### Set temp files to hold raw data -e_P="/tmp/poke.e_P" -e_E="/tmp/poke.e_E" -e_S="/tmp/poke.e_S" -#e_C="/tmp/poke.e_C" - -### Set various pokeAPI endpoint URLs -endpoint_POKEMON="https://pokeapi.co/api/v2/pokemon" -endpoint_SPECIES="https://pokeapi.co/api/v2/pokemon-species" -endpoint_ENCOUNTER="https://pokeapi.co/api/v2/pokemon/$POKEMON/encounters" -#endpoint_CHAIN="https://pokeapi.co/api/v2/evolution-chain" - -### GET from pokeAPI endpoints -curl -s "$endpoint_POKEMON/$POKEMON" -o "$e_P" -curl -s "$endpoint_ENCOUNTER" -o "$e_E" -curl -s "$endpoint_SPECIES/$POKEMON" -o "$e_S" -#curl -s "$endpoint_CHAIN/$ID" -o "$e_C" - -### Parse JSON for attributes -NAME=$(jq -r '. | .name' < "$e_P") -HEIGHT=$(jq -r '.height' < "$e_P") -WEIGHT=$(jq -r '.weight' < "$e_P") -ID=$(jq -r '.id' < "$e_P") -BASEX=$(jq -r '.base_experience' < "$e_P") -BASEHAPPY=$(jq -r '.base_happiness' < "$e_S") -CAPTURE=$(jq -r '.capture_rate' < "$e_S") -LOCATE=$(jq -r '.[].location_area["name"]' < "$e_E") -FLAVOR=$(tr -d '\f' < <(jq -r '.flavor_text_entries[7].flavor_text' < "$e_S")) -GENUS=$(jq -r '.genera[7].genus' < "$e_S") -#mapfile -t CHAIN < <(jq -r '. | .["chain"].evolves_to[].species["name"]' < "$e_C") -mapfile -t TYPE < <(jq -r '. | .types[].type["name"]' < "$e_P") -mapfile -t STAT < <(jq -r '. | .stats[].stat["name"]' < "$e_P") -mapfile -t VAL < <(jq -r '. | .stats[].base_stat' < "$e_P") - -### Print formatted data -printf "%s\tA %s type Pokémon\n" \ - "$NAME" "${TYPE[0]}" -printf "\n%20s\n\n" "$FLAVOR" -#for ((i=0; i<${#CHAIN[@]}; i++)); do -# printf "%s\t" "${CHAIN[@]}" -#done -printf " ↞--------| STATS |--------↠ \n" -for ((i=0; i<${#STAT[@]}; i++)); do - printf "%15s: %10s\n" "${STAT[i]}" "${VAL[i]}" -done -printf "\nPokedex ID: %s\tCapture Rate: %s\nBase Exp: %s\tHappiness: %s\nHeight: %s\tWeight: %s\n" \ - "$ID" "$CAPTURE" "$BASEX" "$BASEHAPPY" "$HEIGHT" "$WEIGHT" -printf "\nGenus: %s" "$GENUS" -printf "\nLocation Areas:\n%s\n" "$LOCATE" - diff --git a/pokeUpdate b/pokeUpdate index e32eb4e..e3ea473 100755 --- a/pokeUpdate +++ b/pokeUpdate @@ -1,18 +1,79 @@ #!/bin/bash +### Set up working dirs DATADIR="/usr/share/fuzzy-pokedex-dev/pokeData" +TMPDIR="$(mktemp -p /tmp -d pokeTemp.XXXXXX)" +### Declare some intergers for calculating percentage of task declare -i WC WC=$(pokemon-colorscripts -l | wc | awk '{print $1}' ) - declare -i COUNT COUNT="$WC" -for POKEMON in $(pokemon-colorscripts -l); do - pokeParse "$POKEMON" > "$DATADIR/$POKEMON" +### Parse PokeAPI json results and format data +pokeParser() { + ### Assign first arg as pokemon + POKEMON="$1" + + ### Set temp files to hold raw data + e_P="$(mktemp -p $TMPDIR -t e_P.$POKEMON.XXXXXX)" + e_E="$(mktemp -p $TMPDIR -t e_E.$POKEMON.XXXXXX)" + e_S="$(mktemp -p $TMPDIR -t e_S.$POKEMON.XXXXXX)" + #e_C="/tmp/poke.e_C" + + ### Set various pokeAPI endpoint URLs + endpoint_POKEMON="https://pokeapi.co/api/v2/pokemon" + endpoint_SPECIES="https://pokeapi.co/api/v2/pokemon-species" + endpoint_ENCOUNTER="https://pokeapi.co/api/v2/pokemon/$POKEMON/encounters" + #endpoint_CHAIN="https://pokeapi.co/api/v2/evolution-chain" + + ### GET from pokeAPI endpoints + curl -s "$endpoint_POKEMON/$POKEMON" -o "$e_P" + curl -s "$endpoint_ENCOUNTER" -o "$e_E" + curl -s "$endpoint_SPECIES/$POKEMON" -o "$e_S" + #curl -s "$endpoint_CHAIN/$ID" -o "$e_C" + + ### Parse JSON for attributes + NAME=$(jq -r '. | .name' < "$e_P") + HEIGHT=$(jq -r '.height' < "$e_P") + WEIGHT=$(jq -r '.weight' < "$e_P") + ID=$(jq -r '.id' < "$e_P") + BASEX=$(jq -r '.base_experience' < "$e_P") + BASEHAPPY=$(jq -r '.base_happiness' < "$e_S") + CAPTURE=$(jq -r '.capture_rate' < "$e_S") + LOCATE=$(jq -r '.[].location_area["name"]' < "$e_E") + FLAVOR=$(tr -d '\f' < <(jq -r '.flavor_text_entries[7].flavor_text' < "$e_S")) + GENUS=$(jq -r '.genera[7].genus' < "$e_S") + #mapfile -t CHAIN < <(jq -r '. | .["chain"].evolves_to[].species["name"]' < "$e_C") + mapfile -t TYPE < <(jq -r '. | .types[].type["name"]' < "$e_P") + mapfile -t STAT < <(jq -r '. | .stats[].stat["name"]' < "$e_P") + mapfile -t VAL < <(jq -r '. | .stats[].base_stat' < "$e_P") + + ### Print formatted data + { printf "%s\tA %s type Pokémon\n" \ + "$NAME" "${TYPE[0]}"; + printf "\n%20s\n\n" "$FLAVOR"; + #for ((i=0; i<${#CHAIN[@]}; i++)); do + # printf "%s\t" "${CHAIN[@]}" + #done + printf " ↞--------| STATS |--------↠ \n"; + for ((i=0; i<${#STAT[@]}; i++)); do + printf "%15s: %10s\n" "${STAT[i]}" "${VAL[i]}"; + done; + printf "\nPokedex ID: %s\tCapture Rate: %s\nBase Exp: %s\tHappiness: %s\nHeight: %s\tWeight: %s\n" \ + "$ID" "$CAPTURE" "$BASEX" "$BASEHAPPY" "$HEIGHT" "$WEIGHT"; + printf "\nGenus: %s" "$GENUS"; + printf "\nLocation Areas:\n%s\n" "$LOCATE";} > "$DATADIR/$POKEMON" + + ### Print completion status updates ((COUNT--)) PCTLEFT="$((COUNT*100/WC))" PCTDONE="$((100-PCTLEFT))" printf "\t%s - %s \t%s%%\n" "$COUNT" "$POKEMON" "$PCTDONE" +} + +for POKEMON in $(pokemon-colorscripts -l); do + pokeParser "$POKEMON" done +rm -rf "$TMPDIR"