53 lines
1.4 KiB
Shell
Executable file
53 lines
1.4 KiB
Shell
Executable file
#!/bin/bash
|
|
|
|
# Generate the next filename in any numbered series of text files and open with emacs.
|
|
|
|
# Usage:
|
|
# $ next [descriptor] [tag]
|
|
|
|
# Handles optional string descriptor and tag. Like this:
|
|
# $ ls
|
|
# 011.blah.md
|
|
#
|
|
# $ next foo
|
|
# 012.foo.md
|
|
#
|
|
# $ next foo bar
|
|
# 013.foo.md
|
|
#
|
|
# Which populates the file like this:
|
|
#
|
|
# # 13.foo.md
|
|
# : 2024.01.14
|
|
# + bar
|
|
#
|
|
# See https://git.bth.moi/bth/um#next
|
|
|
|
# NOTE: we only want the filename, not to run emacs yet.
|
|
LASTFILE=`UMDISABLEEMACS=true; $UMBASEPATH/last.sh`
|
|
|
|
# NOTE: the optional $1 arg passed to awk with -v:
|
|
NEXTFILE=`echo $LASTFILE | awk -f $UMBASEPATH/next.awk -v arg=$1`
|
|
|
|
# tag is optional second arg to this script
|
|
if [ $2 ]; then
|
|
UMELISP=$(printf '(um-next "%s" "%s")' "$NEXTFILE" "$2")
|
|
else
|
|
UMELISP=$(printf '(um-next "%s")' "$NEXTFILE")
|
|
fi
|
|
|
|
# for testing and piping
|
|
# NOTE: bash booleans are such a pain, because they don't exist. https://stackoverflow.com/a/2953673
|
|
if [ "$UMNEXTPRINT" = true ]; then
|
|
# NOTE: printf instead of echo, because echo inserts a newline, and we pipe
|
|
# this back into elisp for um-next-shell:
|
|
printf $NEXTFILE
|
|
elif [ "$UMTEST" = true ]; then
|
|
echo $UMELISP
|
|
else
|
|
# NOTE: emacs won't accept piped input as a file name, so we use --eval to run
|
|
# um-next as elisp. Which also lets us add the header and tag.
|
|
emacsclient --eval "$UMELISP"
|
|
fi
|
|
|
|
exit 0
|