#!/bin/bash VER=0.0.1 NOTESPATH="$HOME/.note-store" CMD_INSERT(){ path=$1 mkdir -p -v "$NOTESPATH/$(dirname -- "$path")" &> /dev/null path="$NOTESPATH/$path.md" $EDITOR $path } CMD_HELP(){ if [ ! -z $1 ]; then CMD_INSERT "$@" else echo cat <<-_EOF Usage: $PROGRAM init Initialize new note storage. $PROGRAM [ls] List notes. $PROGRAM [edit] note-name Insert a new note or edit an existing note using editor. $PROGRAM help Show this text. $PROGRAM version Show version information. _EOF fi exit 0 } CMD_INIT(){ test -d $NOTESPATH && echo "Note Store already exist" && exit 0 || mkdir $NOTESPATH &> /dev/null echo "New note storage creted to: $NOTESPATH" exit 0 } CMD_SHOWTREE(){ if [ ! -z $1 ]; then glow -p $NOTESPATH/$1.md else echo "Note Store" tree -N -C -l --noreport $NOTESPATH | tail -n +2 |\ sed -E 's/\.md(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' fi exit 0 } CMD_FIND(){ [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND note-names..." IFS="," eval 'echo "Search Terms: $*"' local terms="*$(printf '%s*|*' "$@")" tree -N -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$NOTESPATH" |\ tail -n +2 | sed -E 's/\.md(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' } CMD_GREP(){ echo "add to-do grep" } CMD_COPY_MOVE() { move=1 [[ $1 == "copy" ]] && move=0 shift old_path="$NOTESPATH/${1%/}" old_dir="$old_path" new_path="$NOTESPATH/$2" if [[ $move -eq 1 ]]; then mv -v "$old_path.md" "$new_path.md" || exit 1 else cp -r -v "$old_path.md" "$new_path.md" || exit 1 fi } CMD_SHOWVERSION(){ echo $PROGRAM version: $VER } if [[ ! $1 = init ]]; then test -d $NOTESPATH || CMD_HELP fi if [ -z $1 ]; then CMD_SHOWTREE fi PROGRAM="${0##*/}" COMMAND="$1" case "$1" in init) shift; CMD_INIT "$@" ;; help|--help) shift; CMD_HELP "$@" ;; show|ls|list) shift; CMD_SHOWTREE "$@" ;; find|search) shift; CMD_FIND "$@" ;; grep) shift; CMD_GREP "$@" ;; copy|cp) shift; CMD_COPY_MOVE "copy" "$@" ;; rename|mv) shift; CMD_COPY_MOVE "move" "$@" ;; edit) shift; CMD_INSERT "$@" ;; version|-v) CMD_SHOWVERSION ;; *) CMD_HELP "$@" ;; esac find $NOTESPATH* -maxdepth 0 -type f ! -name *.md -delete &> /dev/null exit 0