From db443fa032660759576ca034836082770077d895 Mon Sep 17 00:00:00 2001 From: ayakael Date: Tue, 12 Feb 2019 21:24:13 -0500 Subject: [PATCH] [parser][cmd_fsck][chk_duplicate_trackid] Added function to check for duplicate trackids --- src/chk_duplicate_trackid | 24 ++++++++++++++++++++++++ src/cmd_fsck | 4 ++++ src/parser | 7 ++++++- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/chk_duplicate_trackid diff --git a/src/chk_duplicate_trackid b/src/chk_duplicate_trackid new file mode 100644 index 0000000..7917515 --- /dev/null +++ b/src/chk_duplicate_trackid @@ -0,0 +1,24 @@ +#!/bin/bash + +chk_duplicate_trackid() { + local DB_FILE="${1}" + shift + local trackidList=(${@}) + [ -z ${trackidList+x} ] && local trackidList=($(awk 'BEGIN{FS="\t"}{print $3}' ${DB_FILE} | awk '!seen[$0]++')) + + local COUNT=1 + for trackid in ${trackidList[@]}; do + echo "[ ${COUNT} / ${#trackidList[@]} ] Checking duplicate ${trackid} in ${DB_FILE}" + local curtrackidList=($(awk -v trackid=${trackid} 'BEGIN{FS="\t"}{if($3==trackid){print $3}}' ${DB_FILE})) + if [[ ${#curtrackidList[@]} -gt 1 ]]; then + _ansi up 2; echo -en '\033[K'; echo "[ ${COUNT} / ${#trackidList[@]} ] ${trackid} duplicate" + local duplicatetrackidList=(${duplicatetrackidList[@]} ${trackid}) + local ERR=true + else + _ansi up 2; echo -en '\033[K'; echo "[ ${COUNT} / ${#trackidList[@]} ] ${trackid} not duplicate" + fi + local COUNT=$(( ${COUNT} + 1 )) + done + printf "Duplicate track: %s\n" ${duplicatetrackidList[@]} > ${STDERR} + [[ "${ERR}" == "true" ]] && { _msg EXEC "Duplicate trackid check completed with errors"; _msg WARN; } || { _msg EXEC "Duplicate trackid check completed succesfully"; _msg OK; } +} diff --git a/src/cmd_fsck b/src/cmd_fsck index 5ec2a91..f22474f 100644 --- a/src/cmd_fsck +++ b/src/cmd_fsck @@ -34,6 +34,10 @@ cmd_fsck() { metadata) chk_metadata "${GIT_DIR}" "${TARGET}" "${DB_FILE}" ;; + + duplicate-trackid) + chk_duplicate_trackid "${DB_FILE}" + ;; esac done } diff --git a/src/parser b/src/parser index 3c029db..4fe5cd8 100644 --- a/src/parser +++ b/src/parser @@ -176,6 +176,11 @@ case "${1}" in shift ;; + --duplicate-trackid) + cmdList=(${cmdList[@]} duplicate-trackid) + shift + ;; + *) TARGET="${1}" shift @@ -184,7 +189,7 @@ case "${1}" in esac done - [[ -z ${cmdList[@]} ]] && cmdList=(deployed-ids nonexistent-ids metadata) + [[ -z ${cmdList[@]} ]] && cmdList=(deployed-ids nonexistent-ids metadata duplicate-trackid) cmd_fsck "${_GIT_DIR}" "${TARGET}" ${cmdList[@]} EXIT=$?