mirror of
https://github.com/getbible/v2_builder.git
synced 2024-10-31 18:42:29 +00:00
102 lines
3.1 KiB
Bash
102 lines
3.1 KiB
Bash
|
#! /bin/bash
|
||
|
|
||
|
# Do some prep work
|
||
|
command -v jq >/dev/null 2>&1 || { echo >&2 "We require jq for this script to run, but it's not installed. Aborting."; exit 1; }
|
||
|
command -v sha1sum >/dev/null 2>&1 || { echo >&2 "We require sha1sum for this script to run, but it's not installed. Aborting."; exit 1; }
|
||
|
|
||
|
# make sure we have at least one argument
|
||
|
if [ $# -eq 0 ]
|
||
|
then
|
||
|
echo >&2 "Target folder must be supplied. Aborting."
|
||
|
exit 1;
|
||
|
fi
|
||
|
|
||
|
# setup: positional arguments to pass in literal variables, query with code
|
||
|
jq_args=( )
|
||
|
jq_query='.'
|
||
|
jq_t_args=( )
|
||
|
jq_t_query='.'
|
||
|
|
||
|
# counter
|
||
|
nr=1
|
||
|
|
||
|
# target folder
|
||
|
target_folder="$1"
|
||
|
# tracker counter
|
||
|
counter=0
|
||
|
|
||
|
# check if the folder exist
|
||
|
if [ ! -d $target_folder ]
|
||
|
then
|
||
|
echo >&2 "Folder $target_folder not found. Aborting.";
|
||
|
exit 1;
|
||
|
fi
|
||
|
|
||
|
# book names
|
||
|
echo "# language translation abbreviation direction filename sha" > "${target_folder}/translations"
|
||
|
# checksum
|
||
|
echo "# filename sha" > "${target_folder}/checksum"
|
||
|
|
||
|
|
||
|
for filename in $target_folder/*.json; do
|
||
|
# get the abbreviation
|
||
|
abbreviation="${filename/.json/}"
|
||
|
abbreviation="${abbreviation/${target_folder}\//}"
|
||
|
# do not work with the translations or checksum file
|
||
|
if [[ "$abbreviation" == 'translations' || "$abbreviation" == 'checksum' ]]
|
||
|
then
|
||
|
continue
|
||
|
fi
|
||
|
# do not work with the books or chapters file
|
||
|
if [[ "$abbreviation" == 'books' || "$abbreviation" == 'chapters' ]]
|
||
|
then
|
||
|
continue
|
||
|
fi
|
||
|
# load the translation in
|
||
|
bible=$( cat "${filename}" | jq '.' -a )
|
||
|
# update the file formating
|
||
|
echo "${bible}" > "${filename}"
|
||
|
# build the hash file name
|
||
|
hashFileName="${target_folder}/${abbreviation}.sha"
|
||
|
# get the hash
|
||
|
fileHash=$(sha1sum "${filename}" | awk '{print $1}')
|
||
|
# build the return values
|
||
|
bible=$( echo "${bible}" | jq ". | del(.books) | del(.discription) | .[\"url\"]=\"https://getbible.net/v2/${abbreviation}.json\" | .[\"sha\"]=\"${fileHash}\"" -a )
|
||
|
# get the details
|
||
|
language=$( echo "${bible}" | jq '.language' -r )
|
||
|
translation=$( echo "${bible}" | jq '.translation' -r )
|
||
|
direction=$( echo "${bible}" | jq '.direction' -r )
|
||
|
# set file details to text file
|
||
|
echo "${nr} ${language} ${translation} ${abbreviation} ${direction} ${abbreviation} ${fileHash}" >> "${target_folder}/translations"
|
||
|
# load the values for json
|
||
|
jq_t_args+=( --arg "key$nr" "$abbreviation" )
|
||
|
jq_t_args+=( --argjson "value$nr" "$bible" )
|
||
|
# build query for jq
|
||
|
jq_t_query+=" | .[\$key${nr}]=\$value${nr}"
|
||
|
# create/update the Bible file checksum
|
||
|
echo "${fileHash}" > "$hashFileName"
|
||
|
# echo "${fileHash}" > "$_hashFileName"
|
||
|
echo "${nr} ${abbreviation} ${fileHash}" >> "${target_folder}/checksum"
|
||
|
# load the values for json
|
||
|
jq_args+=( --arg "key$nr" "$abbreviation" )
|
||
|
jq_args+=( --arg "value$nr" "$fileHash" )
|
||
|
# build query for jq
|
||
|
jq_query+=" | .[\$key${nr}]=\$value${nr}"
|
||
|
#next
|
||
|
nr=$((nr+1))
|
||
|
# check if we have counter upto 98
|
||
|
if (("$counter" >= 98))
|
||
|
then
|
||
|
counter=70
|
||
|
fi
|
||
|
# add more
|
||
|
counter=$((counter+1))
|
||
|
# give notice
|
||
|
echo -e "XXX\n${counter}\nDone Hashing $abbreviation\nXXX"
|
||
|
done
|
||
|
|
||
|
# run the generated command with jq
|
||
|
jq "${jq_args[@]}" "$jq_query" <<<'{}' > "${target_folder}/checksum.json"
|
||
|
jq "${jq_t_args[@]}" "$jq_t_query" <<<'{}' > "${target_folder}/translations.json"
|
||
|
|