summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteph Enders <smenders@gmail.com>2023-02-26 22:06:40 -0500
committerSteph Enders <smenders@gmail.com>2023-02-26 22:06:40 -0500
commit9c137d4a179b38f7187e296ae3b0303f5e479c60 (patch)
treee06f5db7e99863d3a56c324b384f0819c34449af
parent0791c354995775becf558f4b0031daf55477f88f (diff)
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/ ```
-rw-r--r--.gitignore2
-rwxr-xr-xautomv.sh23
-rwxr-xr-xtest.sh36
-rw-r--r--test/confs/double.conf8
-rw-r--r--test/confs/empty.conf0
-rw-r--r--test/confs/single.conf3
-rw-r--r--test/confs/triple.conf11
7 files changed, 83 insertions, 0 deletions
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,9 +31,25 @@ 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
# Extract file configs
@@ -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
--- /dev/null
+++ b/test/confs/empty.conf
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/