iMajor internal rework by Quentin Rameau - notes - a console notes manager using git Err bitreich.org 70 1Log /scm/notes/log.gph bitreich.org 70 1Files /scm/notes/files.gph bitreich.org 70 1Refs /scm/notes/refs.gph bitreich.org 70 1Tags /scm/notes/tag bitreich.org 70 1LICENSE /scm/notes/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 901af4715f8b6dd389b9d047a4ff15e769b61723 /scm/notes/commit/901af4715f8b6dd389b9d047a4ff15e769b61723.gph bitreich.org 70 1parent 15b0eb8c733c9fff27256068ba210d3d904bfadb /scm/notes/commit/15b0eb8c733c9fff27256068ba210d3d904bfadb.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Sat, 14 Jul 2018 10:50:03 +0200 Err bitreich.org 70 i Err bitreich.org 70 iMajor internal rework by Quentin Rameau Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M notes | 130 ++++++++++++++----------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 60 insertions(+), 70 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/notes b/notes /scm/notes/file/notes.gph bitreich.org 70 i@@ -2,40 +2,40 @@ Err bitreich.org 70 i Err bitreich.org 70 i # tool for taking notes inside a git repository Err bitreich.org 70 i Err bitreich.org 70 i-REPO=${REPO:=~/notes} Err bitreich.org 70 i+: ${REPO:=~/notes} Err bitreich.org 70 i+ Err bitreich.org 70 i+# search for a suitable editor Err bitreich.org 70 i+[ -z "$EDITOR" ] && \ Err bitreich.org 70 i+for e in nvim vim emacs vi ed; do Err bitreich.org 70 i+ if command -v $e >/dev/null 2>&1; then Err bitreich.org 70 i+ EDITOR=$e Err bitreich.org 70 i+ break Err bitreich.org 70 i+ fi Err bitreich.org 70 i+done Err bitreich.org 70 i Err bitreich.org 70 i-# default editor to vi Err bitreich.org 70 i if [ -z "$EDITOR" ]; then Err bitreich.org 70 i- type nvim >/dev/null 2>&1 && EDITOR=nvim Err bitreich.org 70 i- test -z "$EDITOR" && type vim >/dev/null 2>&1 && EDITOR=vim Err bitreich.org 70 i- test -z "$EDITOR" && type emacs >/dev/null 2>&1 && EDITOR=emacs Err bitreich.org 70 i- test -z "$EDITOR" && EDITOR=vi Err bitreich.org 70 i+ printf 'Could not elect an editor. ED is the standard text editor!\n' Err bitreich.org 70 i+ exit 1 Err bitreich.org 70 i fi Err bitreich.org 70 i Err bitreich.org 70 i usage() { Err bitreich.org 70 i- NAME=$(basename $0) Err bitreich.org 70 i- echo "$NAME [init|ls|history|cat|rm] [path]" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME init" Err bitreich.org 70 i- echo " - initialize the git repository" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME [ls]" Err bitreich.org 70 i- echo " - show hierarchy tree" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME path" Err bitreich.org 70 i- echo ' - start $EDITOR on file and auto commit' Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME history path" Err bitreich.org 70 i- echo " - start tig on file to display file history" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME cat path" Err bitreich.org 70 i- echo " - output content of the file" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME rm path" Err bitreich.org 70 i- echo " - delete file" Err bitreich.org 70 i- echo "" Err bitreich.org 70 i- echo " $NAME last" Err bitreich.org 70 i- echo " - show files ordered by edition time" Err bitreich.org 70 i+ name=$(basename $0) Err bitreich.org 70 i+ printf '%s\n' \ Err bitreich.org 70 i+ "$name [ls] | init | last | [history|cat|rm] PATH" \ Err bitreich.org 70 i+ "$name [ls]" \ Err bitreich.org 70 i+ ': show hierarchy tree' \ Err bitreich.org 70 i+ "$name init" \ Err bitreich.org 70 i+ ': initialize the git repository' \ Err bitreich.org 70 i+ "$name last" \ Err bitreich.org 70 i+ ': show files ordered by edition time' \ Err bitreich.org 70 i+ "$name history PATH" \ Err bitreich.org 70 i+ ': uses tig to display file history' \ Err bitreich.org 70 i+ "$name cat PATH" \ Err bitreich.org 70 i+ ': output content of the file' \ Err bitreich.org 70 i+ "$name rm PATH" \ Err bitreich.org 70 i+ ': delete file' \ Err bitreich.org 70 i+ "$name PATH" \ Err bitreich.org 70 i+ ": start \$EDITOR ($EDITOR) on file and auto commit" Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i # display a file tree of notes taken Err bitreich.org 70 i@@ -45,54 +45,46 @@ display() { Err bitreich.org 70 i Err bitreich.org 70 i # edit a file given as parameter Err bitreich.org 70 i edit() { Err bitreich.org 70 i- DEST="$1" Err bitreich.org 70 i- DIRNAME=$(dirname "$DEST") Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- Err bitreich.org 70 i- if [ ! -d "$DEST" ] Err bitreich.org 70 i+ if [ ! -d "$1" ] Err bitreich.org 70 i then Err bitreich.org 70 i- mkdir -p "${DIRNAME}" Err bitreich.org 70 i- $EDITOR "$DEST" Err bitreich.org 70 i- git add "$DEST" Err bitreich.org 70 i- git commit -m "editing by $USER" "$DEST" Err bitreich.org 70 i+ mkdir -p "$(dirname "$destdir")" Err bitreich.org 70 i+ "$EDITOR" "$1" Err bitreich.org 70 i+ git add "$1" Err bitreich.org 70 i+ git commit -m "editing by $USER" "$1" Err bitreich.org 70 i else Err bitreich.org 70 i- echo "${DEST} is a folder. Aborting" Err bitreich.org 70 i+ printf 'Aborting: "%s" is a directory.\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 # show file history using tig program Err bitreich.org 70 i histo() { Err bitreich.org 70 i- DEST="$1" Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- Err bitreich.org 70 i- tig "$DEST" Err bitreich.org 70 i+ tig "$1" Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i # output the content of a file Err bitreich.org 70 i show_file() { Err bitreich.org 70 i- DEST="$1" Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- cat "$DEST" Err bitreich.org 70 i+ cat "$1" Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i # delete a file and commit in git Err bitreich.org 70 i delete() { Err bitreich.org 70 i- DEST="$1" Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i- if [ -f "$DEST" ]; Err bitreich.org 70 i+ if [ -f "$1" ]; Err bitreich.org 70 i then Err bitreich.org 70 i- git rm "$DEST" Err bitreich.org 70 i- git commit -m "deleted by $USER" "$DEST" Err bitreich.org 70 i+ git rm "$1" Err bitreich.org 70 i+ git commit -m "deleted by $USER" "$1" Err bitreich.org 70 i else Err bitreich.org 70 i- echo "${DEST} is a folder. Aborting." Err bitreich.org 70 i+ printf 'Aborting: "%s" is a directory.\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 # display the list of edited files ordered by time Err bitreich.org 70 i last() { Err bitreich.org 70 i- DEST="$1" Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i git log --pretty="%cr" --name-only | \ Err bitreich.org 70 i awk '{ Err bitreich.org 70 i@@ -113,12 +105,12 @@ _completion_list() { Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i find . -name '.git' -prune -o -mindepth 2 -type f -print | sed 's,^\./,,' Err bitreich.org 70 i else Err bitreich.org 70 i- echo "$REPO does not exist. Aborting..." Err bitreich.org 70 i+ printf 'Aborting: "%s" does not exist.\n' "$REPO" Err bitreich.org 70 i exit 4 Err bitreich.org 70 i fi Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-# create a git repo Err bitreich.org 70 i+# create a git repository Err bitreich.org 70 i initialization() { Err bitreich.org 70 i cd "$REPO" Err bitreich.org 70 i if [ -d .git ] Err bitreich.org 70 i@@ -130,27 +122,25 @@ initialization() { Err bitreich.org 70 i fi Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-mkdir -p "${REPO}" Err bitreich.org 70 i-if [ $? -ne 0 ] Err bitreich.org 70 i+if ! mkdir -p "$REPO" Err bitreich.org 70 i then Err bitreich.org 70 i- echo "Can't create ${REPO}. Aborting." Err bitreich.org 70 i+ printf 'Aborting: cannot create "%s".\n' "$REPO" Err bitreich.org 70 i exit 2 Err bitreich.org 70 i fi Err bitreich.org 70 i Err bitreich.org 70 i-PARAM1="$1" Err bitreich.org 70 i-PARAM2="$2" Err bitreich.org 70 i- Err bitreich.org 70 i-if [ "$PARAM1" = "ls" ]; then display ; exit 0 ; fi Err bitreich.org 70 i-if [ "$PARAM1" = "init" ]; then initialization ; exit 0 ; fi Err bitreich.org 70 i-if [ "$PARAM1" = "" ]; then display ; exit 0 ; fi Err bitreich.org 70 i-if [ "$PARAM1" = "_files" ] ; then _completion_list ; exit 0 ; fi Err bitreich.org 70 i-if [ "$PARAM1" = "rm" ] && [ -n "$PARAM2" ]; then delete "$PARAM2" ; exit 0 ; fi Err bitreich.org 70 i-if expr "$PARAM1" : "^hi" >/dev/null && [ -n "$PARAM2" ]; then histo "$PARAM2" ; exit 0 ; fi Err bitreich.org 70 i-if expr "$PARAM1" : "^c" >/dev/null && [ -n "$PARAM2" ]; then show_file "$PARAM2" ; exit 0 ; fi Err bitreich.org 70 i-if expr "$PARAM1" : "^he" >/dev/null ; then usage ; exit 0 ; fi Err bitreich.org 70 i-if expr "$PARAM1" : "^l" >/dev/null ; then last ; exit 0 ; fi Err bitreich.org 70 i- Err bitreich.org 70 i-if [ -f "${REPO}/${PARAM1}" ] ; then edit "$PARAM1" ; exit 0 ; fi Err bitreich.org 70 i+if [ -f "$REPO/$1" ]; then Err bitreich.org 70 i+ edit "$1" Err bitreich.org 70 i+ exit 0 Err bitreich.org 70 i+fi Err bitreich.org 70 i Err bitreich.org 70 i-# nothing matched Err bitreich.org 70 i-echo "${PARAM1} is not a valid command or an existing filename" && exit 5 Err bitreich.org 70 i+case "$1" in Err bitreich.org 70 i+ '') display ;; Err bitreich.org 70 i+ "ls") display ;; Err bitreich.org 70 i+ "i*") initialization ;; Err bitreich.org 70 i+ "la*") last ;; Err bitreich.org 70 i+ "hi*") [ -n "$2" ] && histo "$2" ;; Err bitreich.org 70 i+ "c*") [ -n "$2" ] && show_file "$2" ;; Err bitreich.org 70 i+ "r*") [ -n "$2" ] && delete "$2" ;; Err bitreich.org 70 i+ "_files") _completion_list ;; Err bitreich.org 70 i+ *) usage && exit 1 ;; Err bitreich.org 70 i+esac Err bitreich.org 70 .