From 5b956b096c5a7ca02944743b9dd1c2099af1c0b8 Mon Sep 17 00:00:00 2001 From: Leonora Tindall Date: Thu, 29 Aug 2024 14:24:17 -0500 Subject: [PATCH] pushd and popd for ctrlp.vim also delegate more stuff --- README | 36 ++++++++++++++++++++++++++++++------ arbnote | 37 ------------------------------------- dnote | 13 +++++-------- gnote | 13 +++++-------- mnote | 13 +++++-------- nnote | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ ynote | 13 +++++-------- 7 files changed, 98 insertions(+), 75 deletions(-) delete mode 100755 arbnote create mode 100755 nnote diff --git a/README b/README index 1a5a029..aebe4e4 100644 --- a/README +++ b/README @@ -1,20 +1,44 @@ nnote: nora's notes ---- -provides four notemaking scripts: dnote, mnote, ynote, gnote +provides a script, nnote, to quickly make notes in a simple hierarchy +provides four quick aliases: dnote, mnote, ynote, gnote installation ---- -set $NOTESDIR or use ~/Notes -clone this repo to ~NOTESDIR/bin -symlink dnote, mnote, ynote, gnote to your path like +optionally, set $NOTESDIR. +if you don't do this, nnote will use ~/Notes -$ ln -s "$NOTESDIR/bin/dnote" "$HOME/.bin/dnote" +then, install the scripts +option 1: clone this repo to ~$NOTESDIR/bin + then symlink dnote, mnote, ynote, gnote to your PATH like + + $ ln -s "$NOTESDIR/bin/dnote" "$HOME/.bin/dnote" + +option 2: clone this repo (wherever you like) and either + a) add that directory to your PATH, or + b) copy or symlink these scripts into your PATH usage ---- -use dnote for daily notes, mnote for monthly, ynote for yearly, gnote for global +when you call nnote, you give it a note type (daily/monthly/yearly/global) +and, optionally, a note name, which can include spaces with or without quoting. + +nnote will: +- create the appropriate note directory, +- make the note if it doesn't exist, +- cd into $NOTESDIR so your CtrlP.vim or whatever will work, +- and then open the note in $EDITOR + +when the editor closes it'll cd back to where you were. + +aliases are provided: +- dnote for daily notes +- mnote for monthly +- ynote for yearly +- gnote for global + you can enter different names but by default those are the note names too the file hierarchy is very simple, for instance: - $NOTESDIR diff --git a/arbnote b/arbnote deleted file mode 100755 index 4fb5466..0000000 --- a/arbnote +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -NOTETYPE="${1-}" -if [[ "$NOTETYPE" == "daily" ]]; then - DATESTRING="$(date +%Y/%m/%d)" - NOTEHEAD=" for $DATESTRING" -elif [[ "$NOTETYPE" == "monthly" ]]; then - DATESTRING="$(date +%Y/%m)" - NOTEHEAD=" for $DATESTRING" -elif [[ "$NOTETYPE" == "yearly" ]]; then - DATESTRING="$(date +%Y)" - NOTEHEAD=" for $DATESTRING" -elif [[ "$NOTETYPE" == "global" ]]; then - DATESTRING="" - NOTEHEAD="" -else - echo "usage: arbnote [notename]" - echo " create or edit a note" - echo " arbnote --help" - echo " print this help" - echo " " - echo "arbnote requires a type: daily, monthly, yearly, or global" - echo "if not provided, type is used for notename, too" - exit 1 -fi - -NOTESDIR="${NOTESDIR:-$HOME/Notes}" -NOTEKIND="$1" -NOTENAME="${2:-$NOTETYPE}" -DATEDIR="$NOTESDIR/$DATESTRING" -mkdir -p "$DATEDIR" -NOTEPATH="$DATEDIR/$NOTENAME" -echo "$NOTEPATH" -if ! [ -f "$NOTEPATH" ]; then - printf "$NOTENAME$NOTEHEAD\n---\n\n" > "$NOTEPATH" -fi -$EDITOR "$NOTEPATH" diff --git a/dnote b/dnote index 4c7737b..47d8a2f 100755 --- a/dnote +++ b/dnote @@ -1,14 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -if [ "${1-}" == "--help" ] || [ "${1-}" == "-h" ]; then - echo "usage: dnote [notename]" - echo " create a daily note in \$NOTESDIR/year/month/day" - echo " default \$NOTESDIR is ~/Notes" - echo " yours is ${NOTESDIR-$HOME/Notes}" - echo " default notename is 'daily'" - echo " multi word notenames accepted without quotes." +if [ -f "$(which nnote)" ]; then + NNOTE="$(which nnote)" else NOTEBIN="$( dirname -- "$( readlink -f -- "$0"; )"; )" - $NOTEBIN/arbnote daily "$*" + NNOTE="$NOTEBIN/nnote" fi +$NNOTE daily "$*" + diff --git a/gnote b/gnote index 6598ff6..4708494 100755 --- a/gnote +++ b/gnote @@ -1,14 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -if [ "${1-}" == "--help" ] || [ "${1-}" == "-h" ]; then - echo "usage: gnote [notename]" - echo " create a note in \$NOTESDIR/" - echo " default \$NOTESDIR is ~/Notes" - echo " yours is ${NOTESDIR-$HOME/Notes}" - echo " default notename is 'global'" - echo " multi word notenames accepted without quotes." +if [ -f "$(which nnote)" ]; then + NNOTE="$(which nnote)" else NOTEBIN="$( dirname -- "$( readlink -f -- "$0"; )"; )" - $NOTEBIN/arbnote global "$*" + NNOTE="$NOTEBIN/nnote" fi +$NNOTE global "$*" + diff --git a/mnote b/mnote index 9a10b4b..1499aa6 100755 --- a/mnote +++ b/mnote @@ -1,14 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -if [ "${1-}" == "--help" ] || [ "${1-}" == "-h" ]; then - echo "usage: mnote [notename]" - echo " create a monthly note in \$NOTESDIR/year/month" - echo " default \$NOTESDIR is ~/Notes" - echo " yours is ${NOTESDIR-$HOME/Notes}" - echo " default notename is 'monthly'" - echo " multi word notenames accepted without quotes." +if [ -f "$(which nnote)" ]; then + NNOTE="$(which nnote)" else NOTEBIN="$( dirname -- "$( readlink -f -- "$0"; )"; )" - $NOTEBIN/arbnote monthly "$*" + NNOTE="$NOTEBIN/nnote" fi +$NNOTE monthly "$*" + diff --git a/nnote b/nnote new file mode 100755 index 0000000..2d34dfa --- /dev/null +++ b/nnote @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -euo pipefail +NOTETYPE="${1-}" +if [[ "$NOTETYPE" == "daily" ]]; then + DATESTRING="$(date +%Y/%m/%d)" + NOTEHEAD=" for $DATESTRING" +elif [[ "$NOTETYPE" == "monthly" ]]; then + DATESTRING="$(date +%Y/%m)" + NOTEHEAD=" for $DATESTRING" +elif [[ "$NOTETYPE" == "yearly" ]]; then + DATESTRING="$(date +%Y)" + NOTEHEAD=" for $DATESTRING" +elif [[ "$NOTETYPE" == "global" ]]; then + DATESTRING="" + NOTEHEAD="" +else + echo "usage: nnote [notename]" + echo " create or edit a note" + echo " nnote --help | -h" + echo " get help for a note type" + echo " " + echo "nnote requires a type: daily, monthly, yearly, or global" + echo "if not provided, type is used for notename, too" + exit 1 +fi + +if [ "${2-}" == "--help" ] || [ "${2-}" == "-h" ]; then + echo "usage: nnote $NOTETYPE [notename]" + echo " create a $NOTETYPE note in \$NOTESDIR/$DATESTRING" + echo " default \$NOTESDIR is ~/Notes" + echo " yours is ${NOTESDIR-$HOME/Notes}" + echo " default notename is '$NOTETYPE'" + echo " multi word notenames accepted without quotes." +else + NOTESDIR="${NOTESDIR:-$HOME/Notes}" + NOTEKIND="$1" + NOTENAME="${2:-$NOTETYPE}" + DATEDIR="$NOTESDIR/$DATESTRING" + mkdir -p "$DATEDIR" + NOTEPATH="$DATEDIR/$NOTENAME" + echo "$NOTEPATH" + if ! [ -f "$NOTEPATH" ]; then + printf "$NOTENAME$NOTEHEAD\n---\n\n" > "$NOTEPATH" + fi + pushd "$NOTESDIR" > /dev/null + $EDITOR "$NOTEPATH" + popd > /dev/null +fi diff --git a/ynote b/ynote index b2518f5..1cd1c21 100755 --- a/ynote +++ b/ynote @@ -1,14 +1,11 @@ #!/usr/bin/env bash set -euo pipefail -if [ "${1-}" == "--help" ] || [ "${1-}" == "-h" ]; then - echo "usage: ynote [notename]" - echo " create a yearly note in \$NOTESDIR/year" - echo " default \$NOTESDIR is ~/Notes" - echo " yours is ${NOTESDIR-$HOME/Notes}" - echo " default notename is 'yearly'" - echo " multi word notenames accepted without quotes." +if [ -f "$(which nnote)" ]; then + NNOTE="$(which nnote)" else NOTEBIN="$( dirname -- "$( readlink -f -- "$0"; )"; )" - $NOTEBIN/arbnote yearly "$*" + NNOTE="$NOTEBIN/nnote" fi +$NNOTE yearly "$*" +