add second arg as tag to next.sh
This commit is contained in:
parent
2a0994057f
commit
a5c9e54b5a
3 changed files with 89 additions and 19 deletions
68
README.md
68
README.md
|
|
@ -16,7 +16,17 @@ Conceptually, `um` is somewhat like org-roam, except without any database depend
|
||||||
|
|
||||||
This "database" depends on a few simple ideas:
|
This "database" depends on a few simple ideas:
|
||||||
|
|
||||||
1. A sequentially numbered filename specification which serves as unique id, like this: `001.foo.md`. The filesystem is the database. Note that the string descriptor is optional.
|
1. A sequentially numbered filename specification which serves as unique id, like this: `001.foo.md`. The filesystem is the database. Note that the string descriptor is optional. In regex terms:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ls | egrep '^[[:digit:]]+\.?.*\.md|txt'
|
||||||
|
```
|
||||||
|
|
||||||
|
In pseudocode:
|
||||||
|
|
||||||
|
```
|
||||||
|
[leadings numbers].[optional string descriptor and . separator][md|txt]
|
||||||
|
```
|
||||||
|
|
||||||
2. Placing that same id into the file header, so that concatenated files have reference back to their source - like this:
|
2. Placing that same id into the file header, so that concatenated files have reference back to their source - like this:
|
||||||
|
|
||||||
|
|
@ -37,13 +47,13 @@ This "database" depends on a few simple ideas:
|
||||||
|
|
||||||
Clone it:
|
Clone it:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
git clone https://git.bth.moi/bth/um.git ~/um
|
git clone https://git.bth.moi/bth/um.git ~/um
|
||||||
```
|
```
|
||||||
|
|
||||||
Symlink the `um` CLI somewhere in your `PATH`:
|
Symlink the `um` CLI somewhere in your `PATH`:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
ln -s ~/um/shell/um /usr/local/bin/um
|
ln -s ~/um/shell/um /usr/local/bin/um
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -74,8 +84,8 @@ The "command line interface" is just a small set of convenient scripts: since th
|
||||||
|
|
||||||
2. Decide on a zero-width for your series and seed the first file:
|
2. Decide on a zero-width for your series and seed the first file:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
touch 001.md
|
touch 01.md
|
||||||
```
|
```
|
||||||
|
|
||||||
The rest of the commands will now work with this width.
|
The rest of the commands will now work with this width.
|
||||||
|
|
@ -84,21 +94,63 @@ The "command line interface" is just a small set of convenient scripts: since th
|
||||||
|
|
||||||
Create a new file, open it with emacsclient, and run `um-journal-header`:
|
Create a new file, open it with emacsclient, and run `um-journal-header`:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
um next
|
um next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 02.md
|
||||||
|
: 2024.01.14
|
||||||
|
```
|
||||||
|
|
||||||
Create a new file with an optional descriptor:
|
Create a new file with an optional descriptor:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
um next foo
|
um next foo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 03.foo.md
|
||||||
|
: 2024.01.14
|
||||||
|
```
|
||||||
|
|
||||||
|
Create a new file with an optional descriptor and tag:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
um next foo bar
|
||||||
|
```
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 04.foo.md
|
||||||
|
: 2024.01.14
|
||||||
|
+ bar
|
||||||
|
```
|
||||||
|
|
||||||
|
Or just append `+` to add the descriptor as a tag:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
um next foo +
|
||||||
|
```
|
||||||
|
|
||||||
|
Yields:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 05.foo.md
|
||||||
|
: 2024.01.14
|
||||||
|
+ foo
|
||||||
|
```
|
||||||
|
|
||||||
## last
|
## last
|
||||||
|
|
||||||
`um last` will print the name of the last numbered file. This can be useful on its own, or like this:
|
`um last` will print the name of the last numbered file. This can be useful on its own, or like this:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
um last | xargs emacs
|
um last | xargs emacs
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,41 @@
|
||||||
# Get the file name in any numbered series of text files and open with emacs
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Generate the next filename in any numbered series of text files and open with emacs.
|
||||||
|
|
||||||
# Usage:
|
# Usage:
|
||||||
# $ next [descriptor]
|
# $ next [descriptor] [tag]
|
||||||
|
|
||||||
# Handles an optional string descriptor. Like this:
|
# Handles optional string descriptor and tag. Like this:
|
||||||
# $ ls
|
# $ ls
|
||||||
# 011.blah.md
|
# 011.blah.md
|
||||||
|
#
|
||||||
# $ next foo
|
# $ next foo
|
||||||
# 012.foo.md
|
# 012.foo.md
|
||||||
|
#
|
||||||
# File format:
|
# $ next foo bar
|
||||||
# in regex terms:
|
# 013.foo.md
|
||||||
# [0-9]+\.[.*\.]*md|txt
|
#
|
||||||
# in plain terms:
|
# Which populates the file like this:
|
||||||
# [leadings numbers with consistent width].[optional string descriptor and . separator][md|txt]
|
#
|
||||||
|
# # 13.foo.md
|
||||||
|
# : 2024.01.14
|
||||||
|
# + bar
|
||||||
|
#
|
||||||
|
# See https://git.bth.moi/bth/um#next
|
||||||
|
|
||||||
# NOTE the optional $1 arg passed to awk with -v:
|
# NOTE the optional $1 arg passed to awk with -v:
|
||||||
NEXTFILE=`$UMBASEPATH/last.sh | awk -f $UMBASEPATH/next.awk -v arg=$1`
|
NEXTFILE=`$UMBASEPATH/last.sh | awk -f $UMBASEPATH/next.awk -v arg=$1`
|
||||||
|
|
||||||
|
# tag is optional second arg to this script
|
||||||
|
TAGINSERT='(previous-line) (insert "+ %s\\n") (next-line)'
|
||||||
|
|
||||||
|
# + means insert the string descriptor as tag
|
||||||
|
if [ $2 = '+' ]; then
|
||||||
|
UMTAG=$(printf "$TAGINSERT" "$1")
|
||||||
|
elif [ $2 ]; then
|
||||||
|
UMTAG=$(printf "$TAGINSERT" "$2")
|
||||||
|
fi
|
||||||
|
|
||||||
# HACK: emacs won't accept piped input as a file name, so we use --eval to open
|
# HACK: emacs won't accept piped input as a file name, so we use --eval to open
|
||||||
# the file via find-file.
|
# the file via find-file.
|
||||||
emacsclient --eval "(progn (find-file \"$NEXTFILE\") (um-journal-header) (message \"creating $NEXTFILE\"))"
|
emacsclient --eval "(progn (find-file \"$NEXTFILE\") (um-journal-header) $UMTAG (message \"creating $NEXTFILE\"))"
|
||||||
|
|
|
||||||
2
shell/um
2
shell/um
|
|
@ -6,7 +6,7 @@ export UMBASEPATH=`realpath $0 | xargs dirname`
|
||||||
# catch first arguments with $1
|
# catch first arguments with $1
|
||||||
case "$1" in
|
case "$1" in
|
||||||
next)
|
next)
|
||||||
$UMBASEPATH/next.sh $2
|
$UMBASEPATH/next.sh $2 $3
|
||||||
;;
|
;;
|
||||||
last)
|
last)
|
||||||
$UMBASEPATH/last.sh
|
$UMBASEPATH/last.sh
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue