ilot of work - dossier - console collection manager Err bitreich.org 70 1Log /scm/dossier/log.gph bitreich.org 70 1Files /scm/dossier/files.gph bitreich.org 70 1Refs /scm/dossier/refs.gph bitreich.org 70 1Tags /scm/dossier/tag bitreich.org 70 1README /scm/dossier/file/README.gph bitreich.org 70 1LICENSE /scm/dossier/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8c7a95569085ede05744318afe3212f4900aca2c /scm/dossier/commit/8c7a95569085ede05744318afe3212f4900aca2c.gph bitreich.org 70 1parent 3bf0b90aa2f8f10172f97fcc092d990407e7bf22 /scm/dossier/commit/3bf0b90aa2f8f10172f97fcc092d990407e7bf22.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Sat, 14 Jul 2018 21:48:15 +0200 Err bitreich.org 70 i Err bitreich.org 70 ilot of work Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M cdb | 106 ++++++++++++++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 90 insertions(+), 16 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/cdb b/cdb /scm/dossier/file/cdb.gph bitreich.org 70 i@@ -2,48 +2,122 @@ Err bitreich.org 70 i Err bitreich.org 70 i REPO=/home/solene/dev/cbd/games/ Err bitreich.org 70 i Err bitreich.org 70 i- Err bitreich.org 70 i+# displays the values of an identifier Err bitreich.org 70 i+# $1 identifier Err bitreich.org 70 i show() { Err bitreich.org 70 i cd "${REPO}" Err bitreich.org 70 i+ SEEN=0 Err bitreich.org 70 i+ for attribute in * Err bitreich.org 70 i+ do Err bitreich.org 70 i+ if [ -f "${attribute}/${1}" ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ if [ "$SEEN" -eq 0 ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf "%s:\n" "$1" Err bitreich.org 70 i+ SEEN=1 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ printf "%15s: %s\n" ${attribute} "$(cat "${attribute}/${1}")" Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ done Err bitreich.org 70 i+ if [ "$SEEN" -eq 1 ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+ else Err bitreich.org 70 i+ printf '%s is not in the library.\n' "$1" Err bitreich.org 70 i+ exit 1 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# delete identifier from attributes Err bitreich.org 70 i+# $1 identifier Err bitreich.org 70 i+delete() { Err bitreich.org 70 i+ cd "${REPO}" Err bitreich.org 70 i for attribute in * Err bitreich.org 70 i do Err bitreich.org 70 i if [ -f "${attribute}/${1}" ] Err bitreich.org 70 i then Err bitreich.org 70 i- printf "%15s: %s\n" ${attribute} "$(cat ${attribute}/${1})" Err bitreich.org 70 i+ rm "${attribute}/${1}" Err bitreich.org 70 i fi Err bitreich.org 70 i done Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays list of identifiers Err bitreich.org 70 i+show_list() { Err bitreich.org 70 i+ cd "${REPO}" Err bitreich.org 70 i+ find . -type f | cut -d '/' -f 3 | sort | uniq -c | \ Err bitreich.org 70 i+ awk '{ for(i=2;i<=NF;i=i+1) { printf "%s ", $i } Err bitreich.org 70 i+ printf "(%i)\n", $1 Err bitreich.org 70 i+ }' Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+# displays attributes used Err bitreich.org 70 i show_attributes() { Err bitreich.org 70 i cd "${REPO}" Err bitreich.org 70 i- ( Err bitreich.org 70 i- for attribute in $(find . -type d -maxdepth 1 -mindepth 1) Err bitreich.org 70 i- do Err bitreich.org 70 i- printf "${attribute}" | cut -d '/' -f 2 Err bitreich.org 70 i- done Err bitreich.org 70 i- ) | sort | tr '\n' ' ' Err bitreich.org 70 i+ find . -type f | cut -d '/' -f 2 | sort | uniq -c | \ Err bitreich.org 70 i+ awk '{ for(i=2;i<=NF;i=i+1) { printf "%s ", $i } Err bitreich.org 70 i+ printf "(%i)\n", $1 Err bitreich.org 70 i+ }' Err bitreich.org 70 i exit 0 Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-# $1 identifier Err bitreich.org 70 i-# $2 attribute Err bitreich.org 70 i-# $3 value Err bitreich.org 70 i+# add/modify a value Err bitreich.org 70 i+# $@ identifier / attr / value / attr / value / .... Err bitreich.org 70 i+# shift to have attr / value again and again Err bitreich.org 70 i add_value() { Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- mkdir -p "$2" Err bitreich.org 70 i- printf '%s' "$3" > "$2"/"$1" Err bitreich.org 70 i+ ID="$1" Err bitreich.org 70 i+ shift Err bitreich.org 70 i+ Err bitreich.org 70 i+ while [ "$#" -gt 1 ] Err bitreich.org 70 i+ do Err bitreich.org 70 i+ ATTRIBUTE="$1" Err bitreich.org 70 i+ VALUE="$2" Err bitreich.org 70 i+ shift 2 Err bitreich.org 70 i+ Err bitreich.org 70 i+ mkdir -p "$ATTRIBUTE" Err bitreich.org 70 i+ printf '%s' "$VALUE" > "$ATTRIBUTE"/"${ID}" Err bitreich.org 70 i+ done Err bitreich.org 70 i exit 0 Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+# returns identifiers having attribute=value Err bitreich.org 70 i # $1 attribute Err bitreich.org 70 i # $2 value Err bitreich.org 70 i search_value() { Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- grep -r "$2" "$1" Err bitreich.org 70 i+ grep -rl "$2" "$1" | cut -d '/' -f 2 Err bitreich.org 70 i exit 0 Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+# returns list of identifiers in a attribute Err bitreich.org 70 i+# $1 attribute Err bitreich.org 70 i+list() { Err bitreich.org 70 i+ cd "$REPO" Err bitreich.org 70 i+ grep -r . "$1" | cut -d '/' -f 2- | sort Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# displays usage Err bitreich.org 70 i+usage() { Err bitreich.org 70 i+ printf '%s\n' \ Err bitreich.org 70 i+ "cdb help" \ Err bitreich.org 70 i+ "cdb ls" \ Err bitreich.org 70 i+ "cdb ls attribute" \ Err bitreich.org 70 i+ "cdb identifier" \ Err bitreich.org 70 i+ "cdb attributes" \ Err bitreich.org 70 i+ "cdb search attribute value" \ Err bitreich.org 70 i+ "cdb identifier attribute value" Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$1" = "rm" ] && [ "$#" -eq 2 ] ; then delete "$2" ; fi Err bitreich.org 70 i+if [ "$1" = "ls" ] && [ "$#" -eq 2 ] ; then list "$2" ; fi Err bitreich.org 70 i+if [ "$1" = "help" ] ; then usage ; fi Err bitreich.org 70 i+if [ "$1" = "ls" ] ; then show_list ; fi Err bitreich.org 70 i if [ "$1" = "search" ] && [ "$#" -eq 3 ]; then search_value "$2" "$3" ; fi Err bitreich.org 70 i if [ "$1" = "attrs" ]; then show_attributes ; fi Err bitreich.org 70 i-if [ "$#" -eq 3 ]; then add_value "$1" "$2" "$3" ; fi Err bitreich.org 70 i-show "$1" Err bitreich.org 70 i+if [ "$#" -ge 3 ]; then add_value $@ ; fi Err bitreich.org 70 i+if [ "$#" -eq 1 ]; then show "$1" ; fi Err bitreich.org 70 i+usage Err bitreich.org 70 .