#!/bin/bash readonly USAGE=" USAGE: $(basename "$0") [SYSTEM]" function help_message() { echo "$USAGE" echo echo "Where [SYSTEM] are:" for WORD in $SYSTEMS; do echo -e "\t$WORD" done } SYSTEMS="apple2 arcade atari2600 atari7800 atarilynx coleco gamegear gb gba gbc mastersystem megadrive msx n64 nes ngpc pcengine sega32x sg1000 snes vectrex virtualboy wonderswan wonderswancolor" # check if there is any parameter if [ "$#" -ne 1 ]; then echo "You must enter a system name." help_message exit 0 fi # check if the parameter is valid if ! echo "$SYSTEMS" | grep -w "$1" >/dev/null; then echo "You must enter a valid system name." help_message exit 0 fi # variables readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" readonly DATA_DIR="$SCRIPT_DIR/data" readonly GAME_LIST_DIR="$SCRIPT_DIR/webdata" readonly SYSTEM_NAME="$1" readonly HASCHEEVOS_TXT="${DATA_DIR}/$1_hascheevos.txt" readonly HASHLIBRARY_JSON="${DATA_DIR}/$1_hashlibrary.json" readonly BLUE_COLOR=$(tput setaf 4) readonly RESET_COLOR=$(tput sgr0) # extract hashes from files on data/system folder echo "Processing $SYSTEM_NAME system." echo "Working folder: $GAME_LIST_DIR" # if file exists, delete it if test -f "${HASCHEEVOS_TXT}"; then rm "${HASCHEEVOS_TXT}" fi # if file exists, delete it if test -f "${HASHLIBRARY_JSON}"; then rm "${HASHLIBRARY_JSON}" fi # check if folder exists if ! test -d "${GAME_LIST_DIR}/${SYSTEM_NAME}"; then echo "Folder ${GAME_LIST_DIR}/${SYSTEM_NAME} does not exist." exit 0 fi # create HASCHEEVOS_TXT file grep -E "title=\"(.*?)\"" -Eo "${GAME_LIST_DIR}/${SYSTEM_NAME}/"* >>"${HASCHEEVOS_TXT}" sed -i -E 's,^\/(.*?)g=,,g' "${HASCHEEVOS_TXT}" sed -i -E 's,title=,true:,g' "${HASCHEEVOS_TXT}" echo "File $HASCHEEVOS_TXT created." # create HASHLIBRARY_JSON echo "{" >"${HASHLIBRARY_JSON}" echo " \"Success\": true," >>"${HASHLIBRARY_JSON}" echo " \"MD5List\": {" >>"${HASHLIBRARY_JSON}" for i in "${GAME_LIST_DIR}/${SYSTEM_NAME}/"*; do # catch hash and append to file printf "%s\n" "$(grep -E "[A-Fa-f0-9]{32}" -Ho "$i")" >>"${HASHLIBRARY_JSON}" printf "%s\r" "${BLUE_COLOR}Parsing $(basename "$i") ... ${RESET_COLOR}" done perl -i -pe 's/(^\/.*?=)([0-9]+):([0-9A-Za-z]{32})/ "$3": $2,/' "${HASHLIBRARY_JSON}" echo " }" >>"${HASHLIBRARY_JSON}" echo "}" >>"${HASHLIBRARY_JSON}" perl -i -00pe 's/,(?!.*,)//s' "${HASHLIBRARY_JSON}" printf "%s\n" "${BLUE_COLOR}Parsed $(wc -l <"${HASHLIBRARY_JSON}") hashes from $(find "${GAME_LIST_DIR}"/"$1" -type f | wc -l) games. ${RESET_COLOR}" echo "File: $HASHLIBRARY_JSON created."