From 9c137d4a179b38f7187e296ae3b0303f5e479c60 Mon Sep 17 00:00:00 2001 From: Steph Enders Date: Sun, 26 Feb 2023 22:06:40 -0500 Subject: Support splitting files with --- / added tests Added some tests to verify that you can now split your files with --- to join multiple queries into a single file. This could be for if you have two separate regexes to run or even two sources you want to run the same query against. Example file: ```example.conf query=.*example.conf$ source=/path/to/example/ target=/path/to/dest/ --- query=.*different.csv$ soruce=/path/to/different/ target=/path/to/dest/ ``` --- .gitignore | 2 ++ automv.sh | 23 +++++++++++++++++++++++ test.sh | 36 ++++++++++++++++++++++++++++++++++++ test/confs/double.conf | 8 ++++++++ test/confs/empty.conf | 0 test/confs/single.conf | 3 +++ test/confs/triple.conf | 11 +++++++++++ 7 files changed, 83 insertions(+) create mode 100755 test.sh create mode 100644 test/confs/double.conf create mode 100644 test/confs/empty.conf create mode 100644 test/confs/single.conf create mode 100644 test/confs/triple.conf diff --git a/.gitignore b/.gitignore index 2fead5c..7b4e90a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ automv.d +test/src +test/dest diff --git a/automv.sh b/automv.sh index c5d496a..2c71375 100755 --- a/automv.sh +++ b/automv.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +TMPDIR=$(mktemp -d) +CSPLIT_PREFIX=$TMPDIR/split + if [[ -n "$AUTOMV_DIR" ]]; then automvdir=$AUTOMV_DIR else @@ -28,8 +31,24 @@ function automv { | xargs -I '{}' mv -v {} $target/ } +function split { + file=$1 + filename=$(basename --suffix=.conf $file) + csplit $1 \ + --prefix="${CSPLIT_PREFIX}-${filename}" \ + --suffix-format='_%04d.conf' \ + --elide-empty-files \ + --suppress-matched \ + --keep-files \ + /---/ '{*}' +} + echo "Executing automv functions from $automvdir" for file in $automvdir/*.conf +do + split $file +done +for file in $TMPDIR/*.conf do echo "found $file" if [[ -f $file ]]; then @@ -41,3 +60,7 @@ do automv $query $sourced $target fi done +echo "Automoved files" +echo "Removing tmp dir: $TMPDIR" +rm -r $TMPDIR +echo "Done" diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..5d5f48e --- /dev/null +++ b/test.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +set -e +function prep { + mkdir -p test/src + + touch ./test/src/a.txt + touch ./test/src/b.txt + touch ./test/src/c.txt + touch ./test/src/d.txt + touch ./test/src/e.txt + touch ./test/src/f.txt + + export TARGET_CNT=$(ls -1 ./test/src/ | wc -l) + + mkdir -p ./test/dest + rm -f ./test/dest/*.txt +} + +function verify { + CNT=$(ls -1 ./test/dest/ | wc -l) + if [[ ${CNT} -ne ${TARGET_CNT} ]]; then + echo "Test failed: expected ${TARGET_CNT} actual: ${CNT}" + exit 1 + fi +} + +function run { + export AUTOMV_DIR=$PWD/test/confs + ./automv.sh +} + +prep +run +verify + +echo "Tests succeeded" diff --git a/test/confs/double.conf b/test/confs/double.conf new file mode 100644 index 0000000..df1551c --- /dev/null +++ b/test/confs/double.conf @@ -0,0 +1,8 @@ +query=.*/b.txt +source=./test/src/ +target=./test/dest/ +--- +query=.*/c.txt +source=./test/src/ +target=./test/dest/ + diff --git a/test/confs/empty.conf b/test/confs/empty.conf new file mode 100644 index 0000000..e69de29 diff --git a/test/confs/single.conf b/test/confs/single.conf new file mode 100644 index 0000000..33a98d7 --- /dev/null +++ b/test/confs/single.conf @@ -0,0 +1,3 @@ +query=.*/a.txt +source=./test/src/ +target=./test/dest/ diff --git a/test/confs/triple.conf b/test/confs/triple.conf new file mode 100644 index 0000000..4d5c384 --- /dev/null +++ b/test/confs/triple.conf @@ -0,0 +1,11 @@ +query=.*/d.txt +source=./test/src/ +target=./test/dest/ +--- +query=.*/e.txt +source=./test/src/ +target=./test/dest/ +--- +query=.*/f.txt +source=./test/src/ +target=./test/dest/ -- cgit v1.2.3-54-g00ecf