summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-04-02 20:56:00 +0200
committerErich Eckner <git@eckner.net>2017-04-02 20:56:00 +0200
commitbf2838c660329895db21de910240a436ff073b19 (patch)
treedf0454a254dc7ab9124d6df19c12816986d0f151
parentecae4b93bf81b31ed5903e0aabcc1ae6abba2b03 (diff)
downloadcheckVersions-bf2838c660329895db21de910240a436ff073b19.tar.xz
use parallel instead of bash-magic
-rw-r--r--check-versions.in81
1 files changed, 33 insertions, 48 deletions
diff --git a/check-versions.in b/check-versions.in
index 391bb88..ef3ac17 100644
--- a/check-versions.in
+++ b/check-versions.in
@@ -1,53 +1,38 @@
#!/bin/bash
-tmpDir="$(mktemp -d)"
-
-declare -A cmds
-declare -A pIDs
-declare -A running
-
-cmds['arch']='ssh nlopc43 eigeneSkripte/archPackages/checkVersions -f -j250'
-cmds['crux']='/usr/src/ports/lastVersion.sh'
-cmds['debian']='ssh router pakete/checkVersions -f'
-
-for dist in "${!cmds[@]}"
-do
- ( ( time ( ${cmds["${dist}"]} &> "${tmpDir}/${dist}" ) ) 2> "${tmpDir}/${dist}.time" || echo "err: $?" >> "${tmpDir}/${dist}" ) &
- pIDs["${dist}"]=$!
- running["${dist}"]=true
-done
-
-set -o pipefail
-
-run=true
-
-while ${run}
-do
- sleep 1
- run=false
- for dist in "${!pIDs[@]}"
- do
- if ! ps aux | \
- awk '{print $2}' | \
- grep -q "^${pIDs["${dist}"]}\$"
- then
- running["${dist}"]=false
- if [ -s "${tmpDir}/${dist}" ]
- then
- sleep 1
- echo -n "${dist} ("
- grep '^real' "${tmpDir}/${dist}.time" | \
- awk '{print $2"):"}'
- cat "${tmpDir}/${dist}"
- echo
- fi
- rm -f "${tmpDir}/${dist}" "${tmpDir}/${dist}.time"
- fi
- if ${running["${dist}"]}
- then
- run=true
+set -e
+
+. #ETCDIR#/check-versions.conf
+
+if [ $# -eq 0 ]; then
+
+ tmpDir="$(mktemp -d)"
+
+ echo "${!cmds[@]}" | \
+ tr ' ' '\n' | \
+ parallel "$0" "${tmpDir}" "{}"
+
+ for dist in "${!cmds[@]}"; do
+ if [ -s "${tmpDir}/${dist}.out" ]; then
+
+ echo -n "${dist} ("
+ grep '^real' "${tmpDir}/${dist}.time" | \
+ awk '{print $2"):"}'
+ cat "${tmpDir}/${dist}.out"
+ echo
+
fi
done
-done
-rmdir "${tmpDir}"
+ rm -rf "${tmpDir}"
+
+else
+
+ time (
+ :;
+ (
+ ${cmds["$2"]}
+ ) &> "$1/$2.out"
+ ) 2> "$1/$2.time"
+
+fi