diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index a0406d6..0000000 --- a/.gitmodules +++ /dev/null @@ -1,9 +0,0 @@ -[submodule "shell/test/bats"] - path = shell/test/bats - url = https://github.com/bats-core/bats-core.git -[submodule "shell/test/test_helper/bats-support"] - path = shell/test/test_helper/bats-support - url = https://github.com/bats-core/bats-support.git -[submodule "shell/test/test_helper/bats-assert"] - path = shell/test/test_helper/bats-assert - url = https://github.com/bats-core/bats-assert.git diff --git a/shell/cat.sh b/shell/cat.sh deleted file mode 100755 index e6edee4..0000000 --- a/shell/cat.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# cat for Markdown in my ultralight writing database -# wherein concatenated filed need a "\n---\n\n" between them. - -############################################################################# -# cat with file headers | replace with section string | remove first instance - -# NOTE: only need to add one newline, because the header inserted by tail -# implicitly adds two : \n==> foo <==\n -tail -n +1 "$@" | sed 's/^==> .* <==$/---\n/g' | tail -n +3 - - -############################## -# failed approaches - -# find . -type f -name "$@" -exec cat {} \; -printf "\n---\n\n" - -# this leaves one trailing, could cat the whole thing and then cut the tail off -# MDCATALL=`for i in "$@"; -# do -# cat $i -# echo '\n---\n\n' -# done` -# echo $MDCATALL | head -n +2 diff --git a/shell/last.sh b/shell/last.sh deleted file mode 100755 index 93836a3..0000000 --- a/shell/last.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# Get the last file name of any numbered series of text files and open it with emacs. - -# file format: -# in regex terms: -# [0-9]+\.[.*\.]*md|txt -# in plain terms: -# [leading numbers with consistent width].[optional string descriptor and . separator][md|txt] - -UMALLFILES=`ls | grep -E '^[[:digit:]].*\.(md|txt)'` -UMLASTSTATUS=$? -UMLASTFILE='' - -if [ "$UMLASTSTATUS" -ne 0 ]; then - UMLASTFILE="$UMDEFAULTINIT" -else - # NOTE: if var isn't quoted echo will change newlines to spaces - UMLASTFILE=`echo "$UMALLFILES" | tail -n 1` -fi - -if [ "$UMDISABLEEMACS" = true ] || [ "$UMTEST" = true ] ; then - echo $UMLASTFILE - exit 0 -fi - -echo "emacsclient -n $UMLASTFILE" -emacsclient -n $UMLASTFILE diff --git a/shell/next.awk b/shell/next.awk deleted file mode 100644 index e2f93a1..0000000 --- a/shell/next.awk +++ /dev/null @@ -1,38 +0,0 @@ -# awk script to increment the digits, preserve the zero prefix, add string descriptor if supplied, and add back extension - -BEGIN { -# Builtin variable, "field seperator", blank by default. The neatness of this is -# the main reason I use awk to parse the filename. -FS = "." -} - -{ - -# another reason why awk is great for this: -newnum = $1 + 1 - -# could I do this with a simpler regex to select all leading zeros? -nzeros = length($1) - length(int(newnum)) -leadingzeros = "" -if (nzeros > 0) - for (i = 1; i <= nzeros; i++) - leadingzeros = sprintf("%s%s", leadingzeros, "0") - -if (nzeros > 0) - newnum = sprintf("%s%s", leadingzeros, newnum) - -# start by prefixing the number, now with leading zeros -finalstr = newnum - -# allow an arg input to fill out descriptor string. -if (arg != "") - finalstr = sprintf("%s.%s", finalstr, arg) - -# append last field by default -finalstr = sprintf("%s.%s", finalstr, $NF) - -} - -END { -print finalstr -} diff --git a/shell/next.sh b/shell/next.sh deleted file mode 100755 index d2015a4..0000000 --- a/shell/next.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/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 diff --git a/shell/rename.awk b/shell/rename.awk deleted file mode 100644 index b90ed2f..0000000 --- a/shell/rename.awk +++ /dev/null @@ -1,27 +0,0 @@ -# generates a string of "oldname newname" from 2 records, for use with mv. Main -# problem solved here generating the newname string using the number prefix and -# filetype affix. - -BEGIN { - FS="." - oldname = "" - num = "" - ext = "" - newname = "" -} - -NR == 1 { - oldname = $0 - num = $1 - # important that this is the last field, not numbered, to allow for a file - # without a string descriptor. - ext = $NF -} - -NR == 2 { - newname = sprintf("%s.%s.%s", num, $0, ext) -} - -END { - print oldname, newname -} diff --git a/shell/rename.sh b/shell/rename.sh deleted file mode 100755 index 071d55d..0000000 --- a/shell/rename.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# rename : renames the string descriptor used in numbered series. - -# Usage: - -# > um rename 100.md foo -# or -# > um rename 100.foo.md bar -# or -# > um last | um rename baz - -# is equivalent to: -# > mv 100.md 100.foo.md -# > mv 100.foo.md 100.bar.md -# > mv 100.bar.md 100.baz.md - -# accept piped input -# https://unix.stackexchange.com/a/537581 -if [[ ! -t 0 ]]; then - FROM=$(cat -) - TO=$1 -else - FROM=$1 - TO=$2 -fi - -# split the args by a newline so that awk reads them as separate "records" -mvcmd=`echo "$FROM -$TO" | awk -f $UMBASEPATH/rename.awk` - -echo mv $mvcmd - -mv $mvcmd diff --git a/shell/tag.sh b/shell/tag.sh deleted file mode 100755 index e9aa4be..0000000 --- a/shell/tag.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# just list the files so we can pipe it. -grep -lE "\+ $@" *md diff --git a/shell/test/bats b/shell/test/bats deleted file mode 160000 index 3d3f63d..0000000 --- a/shell/test/bats +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3d3f63d9772b98c88586ec0a66bd358a85d9b4a6 diff --git a/shell/test/mockjournal/001.md b/shell/test/mockjournal/001.md deleted file mode 100755 index 5bc8787..0000000 --- a/shell/test/mockjournal/001.md +++ /dev/null @@ -1,3 +0,0 @@ -# 001 -: 2024.01.14 -+ foo diff --git a/shell/test/mockjournal/002.blah.md b/shell/test/mockjournal/002.blah.md deleted file mode 100755 index 0cb2f2b..0000000 --- a/shell/test/mockjournal/002.blah.md +++ /dev/null @@ -1,3 +0,0 @@ -# 002.blah -: 2024.01.14 -+ foo diff --git a/shell/test/mockjournal/004.foo.md b/shell/test/mockjournal/004.foo.md deleted file mode 100755 index e69de29..0000000 diff --git a/shell/test/mockjournal/005.md b/shell/test/mockjournal/005.md deleted file mode 100755 index e69de29..0000000 diff --git a/shell/test/mockjournal/009.boo.md b/shell/test/mockjournal/009.boo.md deleted file mode 100755 index e69de29..0000000 diff --git a/shell/test/mockjournal/098.baa.md b/shell/test/mockjournal/098.baa.md deleted file mode 100755 index e69de29..0000000 diff --git a/shell/test/mockjournal/099.poo.md b/shell/test/mockjournal/099.poo.md deleted file mode 100755 index e69de29..0000000 diff --git a/shell/test/mockjournal/foo/bar.cc b/shell/test/mockjournal/foo/bar.cc deleted file mode 100644 index e69de29..0000000 diff --git a/shell/test/test_helper/bats-assert b/shell/test/test_helper/bats-assert deleted file mode 160000 index e2d855b..0000000 --- a/shell/test/test_helper/bats-assert +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e2d855bc78619ee15b0c702b5c30fb074101159f diff --git a/shell/test/test_helper/bats-support b/shell/test/test_helper/bats-support deleted file mode 160000 index 9bf10e8..0000000 --- a/shell/test/test_helper/bats-support +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9bf10e876dd6b624fe44423f0b35e064225f7556 diff --git a/shell/test/um.bats b/shell/test/um.bats deleted file mode 100644 index 3c6542c..0000000 --- a/shell/test/um.bats +++ /dev/null @@ -1,124 +0,0 @@ -setup() { - load 'test_helper/bats-support/load' - load 'test_helper/bats-assert/load' - - # get the containing directory of this file - # use $BATS_TEST_FILENAME instead of ${BASH_SOURCE[0]} or $0, - # as those will point to the bats executable's location or the preprocessed file respectively - DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" - # make executables visible to PATH - # FIXME: why isn't this working? - # PATH="$DIR/../:$PATH" - # commands depend on being in the journal/ path. - export ORIGPWD=`pwd` - cd $DIR/mockjournal - # so that we can run next.sh without dealing with emacsclient. - export UMTEST=true -} - -teardown() { - export UMTEST=false - cd $ORIGPWD - git restore $DIR/mockjournal -} - -@test "um usage" { - run um - assert_output 'usage: um (next|last|cat|rename|tag)' -} - -um_next_awk() { - echo "$1" | awk -f $DIR/../next.awk -v arg="$2" -} - -@test "next.awk" { - run um_next_awk 01.md - assert_output '02.md' - - run um_next_awk 01.md foo - assert_output '02.foo.md' -} - -@test "um next empty" { - run um next - assert_output --partial '100.md' -} - -@test "um next empty elisp" { - run um next - assert_output '(um-next "100.md")' -} - -@test "um next descriptor" { - run um next foo - assert_output --partial '100.foo.md' -} - -@test "um next descriptor tag" { - run um next foo bar - assert_output '(um-next "100.foo.md" "bar")' -} - -# elisp handles this now: -@test "um next descriptor +" { - run um next foo + - assert_output '(um-next "100.foo.md" "+")' -} - -@test "um last" { - run um last - assert_output '099.poo.md' -} - -@test "um last empty" { - cd foo - run um last - assert_output '000.md' -} - -@test "um cat" { - run um cat 001.md 002.blah.md - assert_output '# 001 -: 2024.01.14 -+ foo - ---- - -# 002.blah -: 2024.01.14 -+ foo' -} - -@test "um rename" { - run um rename 001.md blah - run ls 001* - assert_output '001.blah.md' - mv 001.blah.md 001.md -} - -# this doesn't work because bats doesn't handle stdin the way a tty does. -# @test "um rename piped" { -# run um last | um rename gloo -# run ls 099* -# assert_output '099.gloo.md' -# mv 099.gloo.md 099.poo.md -# } - -um_rename_awk() { - echo "$1 -$2" | awk -f $DIR/../rename.awk -} - -@test "rename.awk" { - run um_rename_awk 01.md foo - assert_output '01.md 01.foo.md' - - run um_rename_awk 01.foo.md bar - assert_output '01.foo.md 01.bar.md' -} - -@test "um tag" { - run um tag foo - assert_output '001.md -002.blah.md' -} diff --git a/shell/um b/shell/um deleted file mode 100755 index 7038c71..0000000 --- a/shell/um +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -# export so that we can use it in subscripts. -export UMBASEPATH=`realpath $0 | xargs dirname` -# TODO: load a config file? -export UMDEFAULTINIT='000.md' - -# TODO: decide if getopts would be better. positional args supposed to be bad. -# https://stackoverflow.com/a/28466267 - -# catch first arguments with $1 -case "$1" in - next) - $UMBASEPATH/next.sh $2 $3 - ;; - last) - $UMBASEPATH/last.sh - ;; - cat) - # all args but first - $UMBASEPATH/cat.sh "${@:2}" - ;; - rename) - $UMBASEPATH/rename.sh $2 $3 - ;; - tag) - $UMBASEPATH/tag.sh $2 - ;; - *) - echo "usage: um (next|last|cat|rename|tag)"; exit 1 - ;; -esac