diff options
-rwxr-xr-x | checkAllRepos | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/checkAllRepos b/checkAllRepos index fbe7c1bd5..c27d63bfb 100755 --- a/checkAllRepos +++ b/checkAllRepos @@ -2,27 +2,35 @@ usage() { >&2 echo 'Verwendung:' - >&2 echo "${ich} [-d|--download URL] [-a|--alle] [-s|--suche wonach] [-i|--intensiv] [-x|--exakt]" + >&2 echo "${ich}"' [-d|--download URL] [-a|--alle] [-s|--suche wonach] [-i|--intensiv] [-x|--exakt] [-l|--leise]' exit 1 } verpackung() { typ="$(file -bizL "$1")" case "${typ}" in + "application/x-tar; charset=binary") + ;; "application/x-tar; charset=binary compressed-encoding=application/x-xz; charset=binary") echo "-J" ;; + "application/x-tar; charset=binary compressed-encoding=application/x-bzip2; charset=binary") + echo "-j" + ;; "application/x-tar; charset=binary compressed-encoding=application/x-gzip; charset=binary" | \ "application/octet-stream; charset=binary compressed-encoding=application/x-gzip; charset=binary") echo "-z" ;; "ERROR: (null)" | \ "inode/x-empty; charset=binary") + return 1 ;; *) - >&2 echo "FEHLER: Unbekannter Verpackungstyp '${typ}'" + ${leise} || >&2 echo "FEHLER: Unbekannter Verpackungstyp '${typ}'" + return 1 ;; esac + return 0 } ich="$(readlink -f "$0")" @@ -30,11 +38,12 @@ pfad="$(dirname "${ich}")/.checkAllRepos" [ ! -d "${pfad}" ] && mkdir -p "${pfad}" eval set -- "$( - getopt -o ad:is:x \ + getopt -o ad:ils:x \ --long alle \ --long download: \ --long exakt \ --long intensiv \ + --long leise \ --long suche: \ -n "$(basename "$0")" \ -- "$@" \ @@ -46,10 +55,15 @@ unset downloads suchen alle=false exakt=false intensiv=false +leise=false +flag_l='' while true do case "$1" in + -a|--alle) + alle=true + ;; -d|--download) shift if [ -n "$1" ] @@ -57,15 +71,13 @@ do downloads[${#downloads[@]}]="$1" fi ;; - -a|--alle) - alle=true - ;; - -x|--exakt) - exakt=true - ;; -i|--intensiv) intensiv=true ;; + -l|--leise) + leise=true + flag_l="-l" + ;; -s|--suche) shift if [ -n "$1" ] @@ -73,6 +85,9 @@ do suchen[${#suchen[@]}]="$1" fi ;; + -x|--exakt) + exakt=true + ;; --) shift break @@ -107,21 +122,18 @@ then sed "s|^<pre> \[\([^]]*\)].*\sServer = \(\S\+\)\(\s.*\)\?\$|\1 \2/\1.db|" | \ sed "s|^\(\S\+\)\s\+\(.*\)\$repo|\1 \2\1|; s|\$arch|x86_64|" | \ sed "s|^\S\+\s\+||" | \ - parallel -j0 "${ich} -d {}" + parallel -j0 "${ich} ${flag_l} -d {}" fi for ((i=0;i<${#downloads[@]};i++)) do err=false ziel="${pfad}/${downloads[${i}]##*/}" - curl -o "${ziel}" "${downloads[${i}]}" 2> /dev/null || err=true + wget -O "${ziel}" "${downloads[${i}]}" 2> /dev/null || err=true if ! ${err} then - verp=$(verpackung "${ziel}") - if ! tar ${verp} -tf "${ziel}" &> /dev/null + if ! verp=$(verpackung "${ziel}") || ! tar ${verp} -tf "${ziel}" &> /dev/null then - [ -n "${verp}" ] && \ - echo tar ${verp} -tf "${ziel}" || \ err=true fi fi @@ -129,7 +141,7 @@ do then rm -f "${ziel}" else - echo "${ziel##*/} erfolgreich heruntergeladen" + ${leise} || echo "${ziel##*/} erfolgreich heruntergeladen" fi done @@ -139,7 +151,7 @@ do ${exakt} && suchName="^\(${suchName}\)-[^-]\+-[^-]\+\$" for db in ${pfad}/*.db do - if tar $(verpackung "${db}") -tf "${db}" | \ + if tar $(verpackung "${db}") -tf "${db}" 2> /dev/null | \ grep "/\$" | sed "s|/\$||" | grep -q "${suchName}" @@ -153,10 +165,10 @@ do fi if ${intensiv} then - for pkg in $(tar $(verpackung "${db}") -tf "${db}" --wildcards "*/desc") + for pkg in $(tar $(verpackung "${db}") -tf "${db}" --wildcards "*/desc" 2> /dev/null) do inhalt="$( - tar $(verpackung "${db}") -Oxf "${db}" "${pkg}" | \ + tar $(verpackung "${db}") -Oxf "${db}" "${pkg}" 2> /dev/null | \ sed ' :begin; $!N; |