Fix export + auto git commit - dossier - console collection manager DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 808c788972b30f8ff7a23fc7f329086b727e26fe DIR parent d1471e2efbeb610d78c126894210e2afd1351e30 HTML Author: Solene Rapenne <solene@perso.pw> Date: Sun, 15 Jul 2018 01:32:01 +0200 Fix export + auto git commit Diffstat: M cdb | 33 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) --- DIR diff --git a/cdb b/cdb @@ -2,6 +2,11 @@ : ${REPO:=/home/solene/dev/cbd/games/} mkdir -p "${REPO}" || exit 1 +if [ ! -d "${REPO}/.git" ] +then + cd "$REPO" + git init +fi # displays the values of an identifier # $1 identifier @@ -33,32 +38,24 @@ show() { # we assume it'll works with the dataset export_csv() { cd "${REPO}" - IDS=$(find . -type f | cut -d '/' -f 3 | sort | uniq | paste -s -d '\x0' -) - ATTRS=$(find . -type f | cut -d '/' -f 2 | sort | uniq | paste -s -d '\x0' -) - - OLDIFS=$IFS - IFS=''\x0 # display header printf '"identifier",' - for attr in $ATTRS + find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr do printf '"%s",' $attr done printf '\n' # print database - for id in $IDS + find . -name '.git' -prune -o -type f -print | cut -d '/' -f 3 | sort | uniq | while read id do printf '"%s",' "$id" - for attr in $ATTRS + find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr do - if [ -f "${attr}/${id}" ] - then - printf '"%s",' "$(cat "${attr}/${id}")" - else - printf '"",' - fi + # for faster processing, we do not check existence of file before + awk '{ printf "\"%s\",",$0}' "${attr}/${id}" 2>/dev/null \ + || printf '"",' done printf '\n' done @@ -75,7 +72,7 @@ delete() { do if [ -f "${attribute}/${1}" ] then - rm "${attribute}/${1}" + git commit -m "Delete ${ATTRIBUTE} ${ID}" "${ATTRIBUTE}/${ID}" rmdir "${attribute}" 2> /dev/null SEEN=1 fi @@ -94,7 +91,7 @@ delete() { # displays list of identifiers show_list() { cd "${REPO}" - find . -type f | cut -d '/' -f 3 | sort | uniq -c | \ + find . -name '.git' -prune -o -type f -print | cut -d '/' -f 3 | sort | uniq -c | \ awk '{ for(i=2;i<=NF;i=i+1) { printf "%s ", $i } printf "(%i)\n", $1 }' @@ -104,7 +101,7 @@ show_list() { # displays attributes used show_attributes() { cd "${REPO}" - find . -type f | cut -d '/' -f 2 | sort | uniq -c | \ + find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq -c | \ awk '{ for(i=2;i<=NF;i=i+1) { printf "%s ", $i } printf "(%i)\n", $1 }' @@ -127,6 +124,8 @@ add_value() { mkdir -p "$ATTRIBUTE" printf '%s' "$VALUE" > "${ATTRIBUTE}/${ID}" + git add "${ATTRIBUTE}/${ID}" + git commit -m "Modify %{ATTRIBUTE} on ${ID}" "${ATTRIBUTE}/${ID}" done exit 0 }