dam/src/chk_deployed_ids

48 lines
1.8 KiB
Bash

#!/bin/bash
# doc chk_deployed_ids {
#
# DESCRIPTION
# chk_deployed_ids - Checks if all FLAC files present in TARGET is accounted for in DB_FILE
#
# USAGE
# chk_deployed_ids </path/to/target/dir> </path/to/db/file/>
#
# DEPENDENCIES src/print_meta_flac
#
# }
chk_deployed_ids() {
local TARGET="${1}"
local DB_FILE="${2}"
local flacList=($(find "${TARGET}" -name '*.flac' -not -path '*/\.*' -printf "%P\n"))
local COUNT=0
for flac in ${flacList[@]}; do
local COUNT=$(( ${COUNT} + 1 ))
local ERR=false
echo "[ ${COUNT} / ${#flacList[@]} ] Checking ${flac}"
local metadataList=($(awk 'BEGIN{RS=";";FS="="}{print $2}' <<< $(print_meta_flac "${TARGET}/${flac}" IMAGEID TRACKID)))
local IMAGEID=${metadataList[0]}
local TRACKID=${metadataList[1]}
if [[ -z "${IMAGEID}" ]] || [[ -z "${TRACKID}" ]]; then echo "${flac} does not contain IMAGEID or TRACKID metadata" > ${STDERR}; local ERR=true; fi
[[ "${ERR}" == "true" ]] && { cat ${STDERR}; continue; }
if [[ -z "$(awk -v imageid=${IMAGEID} -v trackid=${TRACKID} 'BEGIN{FS="\t"}{if($2==imageid && $3==trackid){print $0}}' ${DB_FILE})" ]]; then
local ERR=true
echo "Fixing accounting for ${flac}" > ${STDERR}
echo -e "true\t${IMAGEID}\t${TRACKID}\t${flac}" >> ${DB_FILE}
elif [[ "$(awk -v imageid=${IMAGEID} -v trackid=${TRACKID} 'BEGIN{FS="\t"}{if($2==imageid && $3==trackid){print $4}}' ${DB_FILE})" != "${flac}" ]]; then
local ERR=true
echo "Fixing path for ${flac}" > ${STDERR}
gawk -i inplace -v imageid=${IMAGEID} -v trackid=${TRACKID} 'BEGIN{FS="\t"}{if($2==imageid && $3==trackid){$4=path}{print $0}}' ${DB_FILE}
fi
[[ "${ERR}" == "true" ]] && cat ${STDERR}
done
}