From cfcd9fb697470e9066072afd0582727bce031236 Mon Sep 17 00:00:00 2001 From: ayakael Date: Sat, 29 Dec 2018 18:00:07 -0500 Subject: [PATCH] [export_rm] Fixed bug where matching trackids, but one was to be removed, would both be removed, thus creating a remove-redeploy loop --- src/export_rm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/export_rm b/src/export_rm index 084f7b5..ca17170 100644 --- a/src/export_rm +++ b/src/export_rm @@ -20,8 +20,15 @@ export_rm() { local TRACKID=$(awk 'BEGIN{FS="--"}{print $3}' <<< ${3}) ## Removes trackids from TARGET - _msg EXEC "Removing ${TRACKID} from ${TARGET}" - rm "${TARGET}/$(print_present_path "${DB_FILE}" ${IMAGEID} ${TRACKID})" >${STDERR} 2>&1 - [[ $? -eq 0 ]] && { _msg OK; gawk -i inplace -v trackid=${TRACKID} -v value=null 'BEGIN{FS="\t";OFS="\t"}{if($3==trackid){$4=value}{print $0}}' ${DB_FILE}; return 0; } || { _msg WARN; return 1; } + _msg EXEC "Removing ${TRACKID} from ${TARGET})" + local pathList=($( awk -v trackid=${TRACKID} 'BEGIN{FS="\t"}{if($3==trackid && $4!="null"){print $4}})')) + if [[ ${#pathList[@]} -eq 1 ]]; then + rm "${TARGET}/$(print_present_path "${DB_FILE}" ${IMAGEID} ${TRACKID})" >${STDERR} 2>&1 + else + echo "Detected multiple instances of ${TRACKID} with same paths, will not delete" > ${STDERR} + _msg WARN + fi + + [[ $? -eq 0 ]] && { _msg OK; gawk -i inplace -v imageid=${IMAGEID} -v trackid=${TRACKID} -v value=null 'BEGIN{FS="\t";OFS="\t"}{if(($3==trackid && $2==imageid) && $1=="null"){$4=value}{print $0}}' ${DB_FILE}; return 0; } || { _msg WARN; return 1; } }