um rename to handle piped input

This commit is contained in:
bth 2024-06-30 15:44:36 -07:00
commit 7effa12c59
2 changed files with 35 additions and 5 deletions

View file

@ -2,16 +2,31 @@
# Usage:
# > rename 100.md bar
# > um rename 100.md foo
# or
# > rename 100.foo.md bar
# > um rename 100.foo.md bar
# or
# > um last | um rename baz
# is equivalent to:
# > mv 100.md 100.bar.md
# > 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
echo from: $FROM to: $TO
# split the args by a newline so that awk reads them as separate "records"
mvcmd=`echo "$1
$2" | awk -f $UMBASEPATH/rename.awk`
mvcmd=`echo "$FROM
$TO" | awk -f $UMBASEPATH/rename.awk`
mv $mvcmd

View file

@ -89,6 +89,21 @@ um_next_awk() {
+ 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