iRename into dossier - 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 a1a5058a5a89c4d2b50fbf778d7a12979b097359 /scm/dossier/commit/a1a5058a5a89c4d2b50fbf778d7a12979b097359.gph bitreich.org 70 1parent e3c84c638f14e965a28fc7c610261d37036ed184 /scm/dossier/commit/e3c84c638f14e965a28fc7c610261d37036ed184.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Tue, 24 Jul 2018 10:31:00 +0200 Err bitreich.org 70 i Err bitreich.org 70 iRename into dossier Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 4 ++-- Err bitreich.org 70 i M README | 38 ++++++++++++++++---------------- Err bitreich.org 70 i D cdb | 277 ------------------------------- Err bitreich.org 70 i D cdb.1 | 124 ------------------------------- Err bitreich.org 70 i D cdb_sqlite | 142 ------------------------------- Err bitreich.org 70 i A dossier | 277 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i A dossier.1 | 124 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i7 files changed, 422 insertions(+), 564 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/dossier/file/Makefile.gph bitreich.org 70 i@@ -1,10 +1,10 @@ Err bitreich.org 70 i-# cdb – a console collection manage Err bitreich.org 70 i+# dossier – a console collection manage Err bitreich.org 70 i # See the LICENSE file for copyright and license details. Err bitreich.org 70 i .POSIX: Err bitreich.org 70 i Err bitreich.org 70 i VERSION = 0.1 Err bitreich.org 70 i Err bitreich.org 70 i-BIN = cdb Err bitreich.org 70 i+BIN = dossier Err bitreich.org 70 i PREFIX = /usr Err bitreich.org 70 i BINDIR = ${PREFIX}/bin Err bitreich.org 70 i MANDIR = ${PREFIX}/share/man Err bitreich.org 70 1diff --git a/README b/README /scm/dossier/file/README.gph bitreich.org 70 i@@ -1,41 +1,41 @@ Err bitreich.org 70 i-How to use cdb Err bitreich.org 70 i-============== Err bitreich.org 70 i+How to use dossier Err bitreich.org 70 i+================== Err bitreich.org 70 i Err bitreich.org 70 i $ mkdir -p ~/collections/games Err bitreich.org 70 i- $ cdb collections register ~/collections/games games Err bitreich.org 70 i- $ cdb collections games Err bitreich.org 70 i- $ cdb collections Err bitreich.org 70 i+ $ dossier collections register ~/collections/games games Err bitreich.org 70 i+ $ dossier collections games Err bitreich.org 70 i+ $ dossier collections Err bitreich.org 70 i games * Err bitreich.org 70 i- $ cdb supertux rate 5 multiplayer yes Err bitreich.org 70 i- $ cdb nexuiz rate 9 mutpliplayer yes Err bitreich.org 70 i- $ cdb minetest rate 10 multiplayer yes Err bitreich.org 70 i- $ cdb opensonic rate 2 Err bitreich.org 70 i- $ cdb openmw multiplayer no rate 10 style rpg Err bitreich.org 70 i- $ cdb search multiplayer Err bitreich.org 70 i+ $ dossier supertux rate 5 multiplayer yes Err bitreich.org 70 i+ $ dossier nexuiz rate 9 mutpliplayer yes Err bitreich.org 70 i+ $ dossier minetest rate 10 multiplayer yes Err bitreich.org 70 i+ $ dossier opensonic rate 2 Err bitreich.org 70 i+ $ dossier openmw multiplayer no rate 10 style rpg Err bitreich.org 70 i+ $ dossier search multiplayer Err bitreich.org 70 i supertux:yes Err bitreich.org 70 i nexuiz:yes Err bitreich.org 70 i minetest:yes Err bitreich.org 70 i openmw:no Err bitreich.org 70 i- $ cdb search multiplayer no Err bitreich.org 70 i+ $ dossier search multiplayer no Err bitreich.org 70 i openmw Err bitreich.org 70 i- $ cdb search multiplayer yes rate 5 Err bitreich.org 70 i+ $ dossier search multiplayer yes rate 5 Err bitreich.org 70 i supertux Err bitreich.org 70 i- $ cdb supertux rate 6 Err bitreich.org 70 i- $ cdb show Err bitreich.org 70 i+ $ dossier supertux rate 6 Err bitreich.org 70 i+ $ dossier show Err bitreich.org 70 i supertux (2) Err bitreich.org 70 i nexuiz (2) Err bitreich.org 70 i minetest (2) Err bitreich.org 70 i openmw (3) Err bitreich.org 70 i opensonic (1) Err bitreich.org 70 i- $ cdb show openmw Err bitreich.org 70 i+ $ dossier show openmw Err bitreich.org 70 i openmw: Err bitreich.org 70 i multiplayer: no Err bitreich.org 70 i style: rpg Err bitreich.org 70 i rate: 10 Err bitreich.org 70 i- $ cdb opensonic Err bitreich.org 70 i+ $ dossier opensonic Err bitreich.org 70 i opensonic: Err bitreich.org 70 i rate: 2 Err bitreich.org 70 i- $ cdb opensonic rate 3 Err bitreich.org 70 i- $ cdb opensonic Err bitreich.org 70 i+ $ dossier opensonic rate 3 Err bitreich.org 70 i+ $ dossier opensonic Err bitreich.org 70 i opensonic: Err bitreich.org 70 i rate: 3 Err bitreich.org 70 1diff --git a/cdb b/cdb /scm/dossier/file/cdb.gph bitreich.org 70 i@@ -1,277 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i- Err bitreich.org 70 i-REPOSITORY="${HOME}/.collections" Err bitreich.org 70 i-mkdir -p "$REPOSITORY" Err bitreich.org 70 i-test -f "${REPOSITORY}/current" && . "${REPOSITORY}/current" Err bitreich.org 70 i- Err bitreich.org 70 i-if [ -n "$CONTEXT" ] Err bitreich.org 70 i-then Err bitreich.org 70 i- REPO="${REPOSITORY}/${CONTEXT}/" Err bitreich.org 70 i- cd "$REPO" Err bitreich.org 70 i- test ! -d ".git" && git init Err bitreich.org 70 i-else Err bitreich.org 70 i- printf 'No current collection in use\n' Err bitreich.org 70 i-fi 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-# export the data in csv format "data","data","data" Err bitreich.org 70 i-# we assume it'll works with the dataset Err bitreich.org 70 i-export_csv() { Err bitreich.org 70 i- cd "${REPO}" Err bitreich.org 70 i- Err bitreich.org 70 i- # display header Err bitreich.org 70 i- printf '"identifier",' Err bitreich.org 70 i- find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr Err bitreich.org 70 i- do Err bitreich.org 70 i- printf '"%s",' $attr Err bitreich.org 70 i- done Err bitreich.org 70 i- printf '\n' Err bitreich.org 70 i- Err bitreich.org 70 i- # print database Err bitreich.org 70 i- find . -name '.git' -prune -o -type f -print | cut -d '/' -f 3 | sort | uniq | while read id Err bitreich.org 70 i- do Err bitreich.org 70 i- printf '"%s",' "$id" Err bitreich.org 70 i- find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr Err bitreich.org 70 i- do Err bitreich.org 70 i- # for faster processing, we do not check existence of file before Err bitreich.org 70 i- awk '{ printf "\"%s\",",$0}' "${attr}/${id}" 2>/dev/null \ Err bitreich.org 70 i- || printf '"",' Err bitreich.org 70 i- done Err bitreich.org 70 i- printf '\n' Err bitreich.org 70 i- done Err bitreich.org 70 i- IFS=$OLDIFS Err bitreich.org 70 i- exit 0 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- 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- git rm "${attribute}/${1}" Err bitreich.org 70 i- git commit -m "Delete ${attribute} ${1}" "${attribute}/${1}" Err bitreich.org 70 i- rmdir "${attribute}" 2> /dev/null Err bitreich.org 70 i- SEEN=1 Err bitreich.org 70 i- fi Err bitreich.org 70 i- done Err bitreich.org 70 i- Err bitreich.org 70 i- # did we find it? Err bitreich.org 70 i- if [ "$SEEN" -eq 0 ] Err bitreich.org 70 i- then 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- else Err bitreich.org 70 i- exit 0 Err bitreich.org 70 i- fi 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 . -name '.git' -prune -o -type f -print | 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- find . -name '.git' -prune -o -type f -print | 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-# 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- 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- git add "${ATTRIBUTE}/${ID}" Err bitreich.org 70 i- git commit -m "Modify ${ATTRIBUTE} on ${ID}" "${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- shift Err bitreich.org 70 i- Err bitreich.org 70 i- RESULT=$(mktemp /tmp/cdb.XXXXXXXXXXXX) Err bitreich.org 70 i- COUNT=0 Err bitreich.org 70 i- if [ -f "$RESULT" ] Err bitreich.org 70 i- then 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- if [ ! -d "$ATTRIBUTE" ] Err bitreich.org 70 i- then Err bitreich.org 70 i- printf 'The attribute %s do not exists\n' "${ATTRIBUTE}" Err bitreich.org 70 i- exit 5 Err bitreich.org 70 i- fi Err bitreich.org 70 i- grep -rl "$VALUE" "$ATTRIBUTE" | cut -d '/' -f 2 >> "$RESULT" Err bitreich.org 70 i- COUNT=$(( COUNT + 1 )) Err bitreich.org 70 i- done Err bitreich.org 70 i- sort "$RESULT" | uniq -c | \ Err bitreich.org 70 i- awk -v count=$COUNT \ Err bitreich.org 70 i- '{ if($1==count) { Err bitreich.org 70 i- $1="" # remove uniq result Err bitreich.org 70 i- gsub(/^[ ]+/,"",$0) # remove leading space due to uniq Err bitreich.org 70 i- print Err bitreich.org 70 i- }}' Err bitreich.org 70 i- else Err bitreich.org 70 i- printf 'Cannot create a temporary file in /tmp\n' Err bitreich.org 70 i- exit 6 Err bitreich.org 70 i- fi 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-# 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- "Get help" \ Err bitreich.org 70 i- ": cdb help" \ Err bitreich.org 70 i- "" \ Err bitreich.org 70 i- "Export data as CSV" \ Err bitreich.org 70 i- ": cdb export" \ Err bitreich.org 70 i- "" \ Err bitreich.org 70 i- "Show collections, register collections, switch current collection" \ Err bitreich.org 70 i- ": cdb collections [register path name] [name]" \ Err bitreich.org 70 i- "" \ Err bitreich.org 70 i- "Show items and display informations about an item" \ Err bitreich.org 70 i- ": cdb show [identifier]" \ Err bitreich.org 70 i- "" \ Err bitreich.org 70 i- "Look at attributes, search items having some values" \ Err bitreich.org 70 i- ": cdb search [attribute [value]] ... [attribute [value]] ..." \ Err bitreich.org 70 i- "" \ Err bitreich.org 70 i- "Add / Modify attributes values on an item" \ Err bitreich.org 70 i- ": cdb identifier attribute value ... attribute value ..." Err bitreich.org 70 i- exit 0 Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-switch() { Err bitreich.org 70 i- if [ ! -L "${REPOSITORY}/${1}" ] Err bitreich.org 70 i- then Err bitreich.org 70 i- printf 'Collection %s is not registered\n' "${1}" Err bitreich.org 70 i- exit 9 Err bitreich.org 70 i- else Err bitreich.org 70 i- printf 'Switching to collection %s\n' "${1}" Err bitreich.org 70 i- printf 'CONTEXT=%s\n' $1 > "${REPOSITORY}/current" Err bitreich.org 70 i- exit $? Err bitreich.org 70 i- fi Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-collections() { Err bitreich.org 70 i- ls "${REPOSITORY}" | grep -v 'current' | sed "s/^${CONTEXT}$/& */" Err bitreich.org 70 i- exit 0 Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-# create symlink to register a collection Err bitreich.org 70 i-# $1 absolute path to collection Err bitreich.org 70 i-# $2 name of collection Err bitreich.org 70 i-register() { Err bitreich.org 70 i- set -x Err bitreich.org 70 i- if [ -d "${1}" ] Err bitreich.org 70 i- then Err bitreich.org 70 i- if ! expr "${1}" : '^/' Err bitreich.org 70 i- then Err bitreich.org 70 i- printf 'Aborting, the path of the collection must be an absolute path. %s is not valid\n' "${1}" Err bitreich.org 70 i- fi Err bitreich.org 70 i- test -L "${REPOSITORY}/${2}" && rm "${REPOSITORY}/${2}" Err bitreich.org 70 i- ln -s "${1}" "${REPOSITORY}/${2}" Err bitreich.org 70 i- exit 0 Err bitreich.org 70 i- else Err bitreich.org 70 i- printf 'Aborting, %s is not a directory\n' "${2}" Err bitreich.org 70 i- exit 8 Err bitreich.org 70 i- fi Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-if [ "$1" = "export" ] ; then export_csv ; fi Err bitreich.org 70 i-if [ "$1" = "rm" ] && [ "$#" -eq 2 ] ; then delete "$2" ; fi Err bitreich.org 70 i-if [ "$1" = "help" ] ; then usage ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-# dealing with identifiers Err bitreich.org 70 i-if [ "$1" = "show" ] Err bitreich.org 70 i-then Err bitreich.org 70 i- if [ "$#" -eq 1 ]; then show_list ; fi Err bitreich.org 70 i- if [ "$#" -eq 2 ]; then show "$2" ; fi Err bitreich.org 70 i-fi Err bitreich.org 70 i- Err bitreich.org 70 i-# dealing with attributes Err bitreich.org 70 i-if [ "$1" = "search" ]; Err bitreich.org 70 i-then Err bitreich.org 70 i- if [ "$#" -eq 1 ]; then show_attributes ; fi Err bitreich.org 70 i- if [ "$#" -eq 2 ]; then list "$2" ; fi Err bitreich.org 70 i- if [ "$#" -ge 3 ]; then search_value "$@" ; fi Err bitreich.org 70 i-fi Err bitreich.org 70 i- Err bitreich.org 70 i-if [ "$1" = "collections" ]; then Err bitreich.org 70 i- if [ "$#" -eq 1 ]; then collections ; fi Err bitreich.org 70 i- if [ "$#" -eq 2 ]; then switch "$2" ; fi Err bitreich.org 70 i- if [ "$2" = "register" ] && [ "$#" -eq 4 ]; then register "$3" "$4" ; fi Err bitreich.org 70 i-fi Err bitreich.org 70 i- Err bitreich.org 70 i-if [ "$#" -ge 3 ]; then add_value "$@" ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-# no command, maybe it's an item, try it Err bitreich.org 70 i-if [ "$#" -eq 1 ]; then show "$1" ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-usage Err bitreich.org 70 1diff --git a/cdb.1 b/cdb.1 /scm/dossier/file/cdb.1.gph bitreich.org 70 i@@ -1,124 +0,0 @@ Err bitreich.org 70 i-.Dd $Mdocdate: July 18 2018 $ Err bitreich.org 70 i-.Dt CDB 1 Err bitreich.org 70 i-.Os Err bitreich.org 70 i-.Sh NAAME Err bitreich.org 70 i-.Nm cdb Err bitreich.org 70 i-.Nd a console collection manager Err bitreich.org 70 i-.Sh SYNOPSIS Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-.Op Cm show | Cm help | Cm export | Cm collections | Cm search | Ar item Op attribute value Err bitreich.org 70 i-.Sh DESCRIPTION Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-is a tool to register "items" into collections with metadata. Allowing to Err bitreich.org 70 i-keep tracks of collections like wine, tea, video games, movie, music etc... Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-Collections are a set of items, attributes and values. Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-allows to manage different collections to not mix everything. Err bitreich.org 70 i-.Bl -tag -width Ds Err bitreich.org 70 i-.It Nm Cm help Err bitreich.org 70 i-Show help Err bitreich.org 70 i-.It Nm Cm show Op item-name Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Cm show Err bitreich.org 70 i-without argument will display the list of items in the current collection. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-With the argument Err bitreich.org 70 i-.Ar item-name Err bitreich.org 70 i-it will show all the attributes known for that item. Err bitreich.org 70 i-.It Nm Cm export Err bitreich.org 70 i-Export the data of the current collection as CSV (Comma Separated Values). Err bitreich.org 70 i-.It Nm Cm collections Oo collection Oc | Oo register Pa full-path Ar collection-name Oc Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Cm collections Err bitreich.org 70 i-with no argument will show the list of collections that Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-is aware of aka the collections that have been registered. The collection currently in use Err bitreich.org 70 i-will be displayed with a Err bitreich.org 70 i-.Sy * Err bitreich.org 70 i-symbol after the name. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Cm collections Err bitreich.org 70 i-with one parameter Err bitreich.org 70 i-will switch the current collection in use to the collection Err bitreich.org 70 i-.Ar collection. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Cm collections Err bitreich.org 70 i-using the parameter Err bitreich.org 70 i-.Ar register Err bitreich.org 70 i-will make Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-aware of a collection, this requires the full path Err bitreich.org 70 i-.Ar full-path Err bitreich.org 70 i-where is stored the collection and a name Err bitreich.org 70 i-.Ar collection-name Err bitreich.org 70 i-to identify it. When a collection is registered, Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-will initialize a Err bitreich.org 70 i-.Xr git 1 Err bitreich.org 70 i-repository in it if possible. Err bitreich.org 70 i-.It Nm Cm search Oo attribute Oo value Oc Oc Op attribute value Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Cm search Err bitreich.org 70 i-with no argument will return the list of known attributes in the collections with the Err bitreich.org 70 i-number of items for which the attribute is set. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-the command Err bitreich.org 70 i-.Nm search Err bitreich.org 70 i-with one parameter will return the list of the items for which Err bitreich.org 70 i-.Ar attribute Err bitreich.org 70 i-has been recorded and the associated value, using a semi colon as separator. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-The command Err bitreich.org 70 i-.Nm search Err bitreich.org 70 i-with two parameters will return the list of the items having the value Err bitreich.org 70 i-.Ar value Err bitreich.org 70 i-in the attribute Err bitreich.org 70 i-.Ar attribute. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-Using more arguments will return the list of the items matching all the conditions of values in attributes. Err bitreich.org 70 i-.It Nm Ar item-name Err bitreich.org 70 i-shows all the attributes known for that item. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-In case you need to use an Err bitreich.org 70 i-.Ar item-name Err bitreich.org 70 i-like "collections" or any other name being a Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-command, the command Err bitreich.org 70 i-.Cm show Ar item-name Err bitreich.org 70 i-is required. Err bitreich.org 70 i-.It Nm Ar item-name Ar attribute Ar value Op Ar attribute2 Ar value2 Ar ... Err bitreich.org 70 i-Associate the value Err bitreich.org 70 i-.Ar value Err bitreich.org 70 i-to the attribute Err bitreich.org 70 i-.Ar attribute Err bitreich.org 70 i-for item Err bitreich.org 70 i-.Ar item-name. Err bitreich.org 70 i-Multiples couple of Err bitreich.org 70 i-.Ar attribute value Err bitreich.org 70 i-can be used on the same command line to define multiples values. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-This is the way to add and update data inside a collection. Err bitreich.org 70 i-.Pp Err bitreich.org 70 i-Every modification is recorded with Err bitreich.org 70 i-.Xr git 1 . Err bitreich.org 70 i- Err bitreich.org 70 i-.Sh FILES Err bitreich.org 70 i-.Bl -tag -width "~/.collections" -compact Err bitreich.org 70 i-.It Pa ~/.collections Err bitreich.org 70 i-The directory where Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-stores the collections registered as symlinks to their full path. Err bitreich.org 70 i-.Sh EXIT Err bitreich.org 70 i-.Ex -std cdb Err bitreich.org 70 i-.Sh SEE ALSO Err bitreich.org 70 i-.Xr git 1 Err bitreich.org 70 i-.Sh Authors Err bitreich.org 70 i-.An -nosplit Err bitreich.org 70 i-The Err bitreich.org 70 i-.Nm Err bitreich.org 70 i-program was written by Err bitreich.org 70 i-.An Solène Rapenne Aq Mt solene@perso.pw Err bitreich.org 70 1diff --git a/cdb_sqlite b/cdb_sqlite /scm/dossier/file/cdb_sqlite.gph bitreich.org 70 i@@ -1,142 +0,0 @@ Err bitreich.org 70 i-#!/bin/sh Err bitreich.org 70 i- Err bitreich.org 70 i-if [ ! -f "database.sqlite" ] Err bitreich.org 70 i-then Err bitreich.org 70 i- printf 'CREATE TABLE collection ( id text primary key );' | \ Err bitreich.org 70 i- sqlite3 database.sqlite || exit 1 Err bitreich.org 70 i-fi Err bitreich.org 70 i-#mkdir -p "${REPO}" || exit 1 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- printf "SELECT * FROM collection WHERE id = '%s';" \ Err bitreich.org 70 i- "$1" | \ Err bitreich.org 70 i- sqlite3 database.sqlite -line Err bitreich.org 70 i- Err bitreich.org 70 i- if [ "$?" -eq 0 ] 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-# export the data in csv format "data","data","data" Err bitreich.org 70 i-# we assume it'll works with the dataset Err bitreich.org 70 i-export_csv() { Err bitreich.org 70 i- sqlite3 database.sqlite -header -csv 'select * from collection;' Err bitreich.org 70 i- exit $? 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- printf "DELETE from collection where id = '%s';" "$1" | \ Err bitreich.org 70 i- sqlite3 database.sqlite Err bitreich.org 70 i- Err bitreich.org 70 i- if [ "$?" -ne 0 ] Err bitreich.org 70 i- then 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- else Err bitreich.org 70 i- exit 0 Err bitreich.org 70 i- fi 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- printf "SELECT id from collection;" | \ Err bitreich.org 70 i- sqlite3 database.sqlite 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- sqlite3 database.sqlite 'PRAGMA table_info(collection)' | \ Err bitreich.org 70 i- 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-# 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- 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- # add a column if it doesn't exist Err bitreich.org 70 i- if [ -z "$(sqlite3 database.sqlite 'PRAGMA table_info(collection);' | grep "|${ATTRIBUTE}|")" ] Err bitreich.org 70 i- then Err bitreich.org 70 i- printf 'ALTER TABLE collection ADD COLUMN %s text;' "${ATTRIBUTE}" | \ Err bitreich.org 70 i- sqlite3 database.sqlite Err bitreich.org 70 i- fi Err bitreich.org 70 i- printf "INSERT INTO collection('id') VALUES ('%s');" "$ID" | \ Err bitreich.org 70 i- sqlite3 database.sqlite >/dev/null 2>&1 Err bitreich.org 70 i- Err bitreich.org 70 i- printf "UPDATE collection SET %s = '%s' WHERE id = '%s';" \ Err bitreich.org 70 i- "$ATTRIBUTE" "$VALUE" "$ID" | \ Err bitreich.org 70 i- sqlite3 database.sqlite 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- printf "SELECT id FROM collection WHERE %s = '%s';" \ Err bitreich.org 70 i- "$1" "$2" | \ Err bitreich.org 70 i- sqlite3 database.sqlite 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- printf "SELECT id,%s as attribute FROM collection WHERE attribute <> '';" \ Err bitreich.org 70 i- "$1" | \ Err bitreich.org 70 i- sqlite3 database.sqlite 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 export" \ Err bitreich.org 70 i- "cdb show [identifier]" \ Err bitreich.org 70 i- "cdb search [attribute [value]]" \ Err bitreich.org 70 i- "cdb identifier attribute value ... 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" = "export" ] ; then export_csv ; fi Err bitreich.org 70 i-if [ "$1" = "rm" ] && [ "$#" -eq 2 ] ; then delete "$2" ; fi Err bitreich.org 70 i-if [ "$1" = "help" ] ; then usage ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-# dealing with identifiers Err bitreich.org 70 i-if [ "$1" = "show" ] Err bitreich.org 70 i-then Err bitreich.org 70 i- if [ "$#" -eq 1 ]; then show_list ; fi Err bitreich.org 70 i- if [ "$#" -eq 2 ]; then show "$2" ; fi Err bitreich.org 70 i-fi Err bitreich.org 70 i- Err bitreich.org 70 i-# dealing with attributes Err bitreich.org 70 i-if [ "$1" = "search" ]; Err bitreich.org 70 i-then Err bitreich.org 70 i- if [ "$#" -eq 1 ]; then show_attributes ; fi Err bitreich.org 70 i- if [ "$#" -eq 2 ]; then list "$2" ; fi Err bitreich.org 70 i- if [ "$#" -eq 3 ]; then search_value "$2" "$3" ; fi Err bitreich.org 70 i-fi Err bitreich.org 70 i- Err bitreich.org 70 i-if [ "$#" -ge 3 ]; then add_value "$@" ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-usage Err bitreich.org 70 1diff --git a/dossier b/dossier /scm/dossier/file/dossier.gph bitreich.org 70 i@@ -0,0 +1,277 @@ Err bitreich.org 70 i+#!/bin/sh Err bitreich.org 70 i+ Err bitreich.org 70 i+REPOSITORY="${HOME}/.collections" Err bitreich.org 70 i+mkdir -p "$REPOSITORY" Err bitreich.org 70 i+test -f "${REPOSITORY}/current" && . "${REPOSITORY}/current" Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ -n "$CONTEXT" ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ REPO="${REPOSITORY}/${CONTEXT}/" Err bitreich.org 70 i+ cd "$REPO" Err bitreich.org 70 i+ test ! -d ".git" && git init Err bitreich.org 70 i+else Err bitreich.org 70 i+ printf 'No current collection in use\n' Err bitreich.org 70 i+fi 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+# export the data in csv format "data","data","data" Err bitreich.org 70 i+# we assume it'll works with the dataset Err bitreich.org 70 i+export_csv() { Err bitreich.org 70 i+ cd "${REPO}" Err bitreich.org 70 i+ Err bitreich.org 70 i+ # display header Err bitreich.org 70 i+ printf '"identifier",' Err bitreich.org 70 i+ find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr Err bitreich.org 70 i+ do Err bitreich.org 70 i+ printf '"%s",' $attr Err bitreich.org 70 i+ done Err bitreich.org 70 i+ printf '\n' Err bitreich.org 70 i+ Err bitreich.org 70 i+ # print database Err bitreich.org 70 i+ find . -name '.git' -prune -o -type f -print | cut -d '/' -f 3 | sort | uniq | while read id Err bitreich.org 70 i+ do Err bitreich.org 70 i+ printf '"%s",' "$id" Err bitreich.org 70 i+ find . -name '.git' -prune -o -type f -print | cut -d '/' -f 2 | sort | uniq | while read attr Err bitreich.org 70 i+ do Err bitreich.org 70 i+ # for faster processing, we do not check existence of file before Err bitreich.org 70 i+ awk '{ printf "\"%s\",",$0}' "${attr}/${id}" 2>/dev/null \ Err bitreich.org 70 i+ || printf '"",' Err bitreich.org 70 i+ done Err bitreich.org 70 i+ printf '\n' Err bitreich.org 70 i+ done Err bitreich.org 70 i+ IFS=$OLDIFS Err bitreich.org 70 i+ exit 0 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+ 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+ git rm "${attribute}/${1}" Err bitreich.org 70 i+ git commit -m "Delete ${attribute} ${1}" "${attribute}/${1}" Err bitreich.org 70 i+ rmdir "${attribute}" 2> /dev/null Err bitreich.org 70 i+ SEEN=1 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ done Err bitreich.org 70 i+ Err bitreich.org 70 i+ # did we find it? Err bitreich.org 70 i+ if [ "$SEEN" -eq 0 ] Err bitreich.org 70 i+ then 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+ else Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+ fi 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 . -name '.git' -prune -o -type f -print | 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+ find . -name '.git' -prune -o -type f -print | 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+# 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+ 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+ git add "${ATTRIBUTE}/${ID}" Err bitreich.org 70 i+ git commit -m "Modify ${ATTRIBUTE} on ${ID}" "${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+ shift Err bitreich.org 70 i+ Err bitreich.org 70 i+ RESULT=$(mktemp /tmp/dossier.XXXXXXXXXXXX) Err bitreich.org 70 i+ COUNT=0 Err bitreich.org 70 i+ if [ -f "$RESULT" ] Err bitreich.org 70 i+ then 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+ if [ ! -d "$ATTRIBUTE" ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf 'The attribute %s do not exists\n' "${ATTRIBUTE}" Err bitreich.org 70 i+ exit 5 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ grep -rl "$VALUE" "$ATTRIBUTE" | cut -d '/' -f 2 >> "$RESULT" Err bitreich.org 70 i+ COUNT=$(( COUNT + 1 )) Err bitreich.org 70 i+ done Err bitreich.org 70 i+ sort "$RESULT" | uniq -c | \ Err bitreich.org 70 i+ awk -v count=$COUNT \ Err bitreich.org 70 i+ '{ if($1==count) { Err bitreich.org 70 i+ $1="" # remove uniq result Err bitreich.org 70 i+ gsub(/^[ ]+/,"",$0) # remove leading space due to uniq Err bitreich.org 70 i+ print Err bitreich.org 70 i+ }}' Err bitreich.org 70 i+ else Err bitreich.org 70 i+ printf 'Cannot create a temporary file in /tmp\n' Err bitreich.org 70 i+ exit 6 Err bitreich.org 70 i+ fi 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+# 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+ "Get help" \ Err bitreich.org 70 i+ ": dossier help" \ Err bitreich.org 70 i+ "" \ Err bitreich.org 70 i+ "Export data as CSV" \ Err bitreich.org 70 i+ ": dossier export" \ Err bitreich.org 70 i+ "" \ Err bitreich.org 70 i+ "Show collections, register collections, switch current collection" \ Err bitreich.org 70 i+ ": dossier collections [register path name] [name]" \ Err bitreich.org 70 i+ "" \ Err bitreich.org 70 i+ "Show items and display informations about an item" \ Err bitreich.org 70 i+ ": dossier show [identifier]" \ Err bitreich.org 70 i+ "" \ Err bitreich.org 70 i+ "Look at attributes, search items having some values" \ Err bitreich.org 70 i+ ": dossier search [attribute [value]] ... [attribute [value]] ..." \ Err bitreich.org 70 i+ "" \ Err bitreich.org 70 i+ "Add / Modify attributes values on an item" \ Err bitreich.org 70 i+ ": dossier identifier attribute value ... attribute value ..." Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+switch() { Err bitreich.org 70 i+ if [ ! -L "${REPOSITORY}/${1}" ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf 'Collection %s is not registered\n' "${1}" Err bitreich.org 70 i+ exit 9 Err bitreich.org 70 i+ else Err bitreich.org 70 i+ printf 'Switching to collection %s\n' "${1}" Err bitreich.org 70 i+ printf 'CONTEXT=%s\n' $1 > "${REPOSITORY}/current" Err bitreich.org 70 i+ exit $? Err bitreich.org 70 i+ fi Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+collections() { Err bitreich.org 70 i+ ls "${REPOSITORY}" | grep -v 'current' | sed "s/^${CONTEXT}$/& */" Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+# create symlink to register a collection Err bitreich.org 70 i+# $1 absolute path to collection Err bitreich.org 70 i+# $2 name of collection Err bitreich.org 70 i+register() { Err bitreich.org 70 i+ set -x Err bitreich.org 70 i+ if [ -d "${1}" ] Err bitreich.org 70 i+ then Err bitreich.org 70 i+ if ! expr "${1}" : '^/' Err bitreich.org 70 i+ then Err bitreich.org 70 i+ printf 'Aborting, the path of the collection must be an absolute path. %s is not valid\n' "${1}" Err bitreich.org 70 i+ fi Err bitreich.org 70 i+ test -L "${REPOSITORY}/${2}" && rm "${REPOSITORY}/${2}" Err bitreich.org 70 i+ ln -s "${1}" "${REPOSITORY}/${2}" Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+ else Err bitreich.org 70 i+ printf 'Aborting, %s is not a directory\n' "${2}" Err bitreich.org 70 i+ exit 8 Err bitreich.org 70 i+ fi Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$1" = "export" ] ; then export_csv ; fi Err bitreich.org 70 i+if [ "$1" = "rm" ] && [ "$#" -eq 2 ] ; then delete "$2" ; fi Err bitreich.org 70 i+if [ "$1" = "help" ] ; then usage ; fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# dealing with identifiers Err bitreich.org 70 i+if [ "$1" = "show" ] Err bitreich.org 70 i+then Err bitreich.org 70 i+ if [ "$#" -eq 1 ]; then show_list ; fi Err bitreich.org 70 i+ if [ "$#" -eq 2 ]; then show "$2" ; fi Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# dealing with attributes Err bitreich.org 70 i+if [ "$1" = "search" ]; Err bitreich.org 70 i+then Err bitreich.org 70 i+ if [ "$#" -eq 1 ]; then show_attributes ; fi Err bitreich.org 70 i+ if [ "$#" -eq 2 ]; then list "$2" ; fi Err bitreich.org 70 i+ if [ "$#" -ge 3 ]; then search_value "$@" ; fi Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$1" = "collections" ]; then Err bitreich.org 70 i+ if [ "$#" -eq 1 ]; then collections ; fi Err bitreich.org 70 i+ if [ "$#" -eq 2 ]; then switch "$2" ; fi Err bitreich.org 70 i+ if [ "$2" = "register" ] && [ "$#" -eq 4 ]; then register "$3" "$4" ; fi Err bitreich.org 70 i+fi Err bitreich.org 70 i+ Err bitreich.org 70 i+if [ "$#" -ge 3 ]; then add_value "$@" ; fi Err bitreich.org 70 i+ Err bitreich.org 70 i+# no command, maybe it's an item, try it Err bitreich.org 70 i+if [ "$#" -eq 1 ]; then show "$1" ; fi Err bitreich.org 70 i+ Err bitreich.org 70 i+usage Err bitreich.org 70 1diff --git a/dossier.1 b/dossier.1 /scm/dossier/file/dossier.1.gph bitreich.org 70 i@@ -0,0 +1,124 @@ Err bitreich.org 70 i+.Dd $Mdocdate: July 18 2018 $ Err bitreich.org 70 i+.Dt DOSSIER 1 Err bitreich.org 70 i+.Os Err bitreich.org 70 i+.Sh NAAME Err bitreich.org 70 i+.Nm dossier Err bitreich.org 70 i+.Nd a console collection manager Err bitreich.org 70 i+.Sh SYNOPSIS Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+.Op Cm show | Cm help | Cm export | Cm collections | Cm search | Ar item Op attribute value Err bitreich.org 70 i+.Sh DESCRIPTION Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+is a tool to register "items" into collections with metadata. Allowing to Err bitreich.org 70 i+keep tracks of collections like wine, tea, video games, movie, music etc... Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Collections are a set of items, attributes and values. Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+allows to manage different collections to not mix everything. Err bitreich.org 70 i+.Bl -tag -width Ds Err bitreich.org 70 i+.It Nm Cm help Err bitreich.org 70 i+Show help Err bitreich.org 70 i+.It Nm Cm show Op item-name Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Cm show Err bitreich.org 70 i+without argument will display the list of items in the current collection. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+With the argument Err bitreich.org 70 i+.Ar item-name Err bitreich.org 70 i+it will show all the attributes known for that item. Err bitreich.org 70 i+.It Nm Cm export Err bitreich.org 70 i+Export the data of the current collection as CSV (Comma Separated Values). Err bitreich.org 70 i+.It Nm Cm collections Oo collection Oc | Oo register Pa full-path Ar collection-name Oc Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Cm collections Err bitreich.org 70 i+with no argument will show the list of collections that Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+is aware of aka the collections that have been registered. The collection currently in use Err bitreich.org 70 i+will be displayed with a Err bitreich.org 70 i+.Sy * Err bitreich.org 70 i+symbol after the name. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Cm collections Err bitreich.org 70 i+with one parameter Err bitreich.org 70 i+will switch the current collection in use to the collection Err bitreich.org 70 i+.Ar collection. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Cm collections Err bitreich.org 70 i+using the parameter Err bitreich.org 70 i+.Ar register Err bitreich.org 70 i+will make Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+aware of a collection, this requires the full path Err bitreich.org 70 i+.Ar full-path Err bitreich.org 70 i+where is stored the collection and a name Err bitreich.org 70 i+.Ar collection-name Err bitreich.org 70 i+to identify it. When a collection is registered, Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+will initialize a Err bitreich.org 70 i+.Xr git 1 Err bitreich.org 70 i+repository in it if possible. Err bitreich.org 70 i+.It Nm Cm search Oo attribute Oo value Oc Oc Op attribute value Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Cm search Err bitreich.org 70 i+with no argument will return the list of known attributes in the collections with the Err bitreich.org 70 i+number of items for which the attribute is set. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+the command Err bitreich.org 70 i+.Nm search Err bitreich.org 70 i+with one parameter will return the list of the items for which Err bitreich.org 70 i+.Ar attribute Err bitreich.org 70 i+has been recorded and the associated value, using a semi colon as separator. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+The command Err bitreich.org 70 i+.Nm search Err bitreich.org 70 i+with two parameters will return the list of the items having the value Err bitreich.org 70 i+.Ar value Err bitreich.org 70 i+in the attribute Err bitreich.org 70 i+.Ar attribute. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Using more arguments will return the list of the items matching all the conditions of values in attributes. Err bitreich.org 70 i+.It Nm Ar item-name Err bitreich.org 70 i+shows all the attributes known for that item. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+In case you need to use an Err bitreich.org 70 i+.Ar item-name Err bitreich.org 70 i+like "collections" or any other name being a Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+command, the command Err bitreich.org 70 i+.Cm show Ar item-name Err bitreich.org 70 i+is required. Err bitreich.org 70 i+.It Nm Ar item-name Ar attribute Ar value Op Ar attribute2 Ar value2 Ar ... Err bitreich.org 70 i+Associate the value Err bitreich.org 70 i+.Ar value Err bitreich.org 70 i+to the attribute Err bitreich.org 70 i+.Ar attribute Err bitreich.org 70 i+for item Err bitreich.org 70 i+.Ar item-name. Err bitreich.org 70 i+Multiples couple of Err bitreich.org 70 i+.Ar attribute value Err bitreich.org 70 i+can be used on the same command line to define multiples values. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+This is the way to add and update data inside a collection. Err bitreich.org 70 i+.Pp Err bitreich.org 70 i+Every modification is recorded with Err bitreich.org 70 i+.Xr git 1 . Err bitreich.org 70 i+ Err bitreich.org 70 i+.Sh FILES Err bitreich.org 70 i+.Bl -tag -width "~/.collections" -compact Err bitreich.org 70 i+.It Pa ~/.collections Err bitreich.org 70 i+The directory where Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+stores the collections registered as symlinks to their full path. Err bitreich.org 70 i+.Sh EXIT Err bitreich.org 70 i+.Ex -std dossier Err bitreich.org 70 i+.Sh SEE ALSO Err bitreich.org 70 i+.Xr git 1 Err bitreich.org 70 i+.Sh Authors Err bitreich.org 70 i+.An -nosplit Err bitreich.org 70 i+The Err bitreich.org 70 i+.Nm Err bitreich.org 70 i+program was written by Err bitreich.org 70 i+.An Solène Rapenne Aq Mt solene@perso.pw Err bitreich.org 70 .