From 32523a5e21335c6fb7fdbfe8b5dbcc0ffbfffa86 Mon Sep 17 00:00:00 2001 From: John D Pell Date: Thu, 17 Feb 2022 21:55:53 -0800 Subject: [PATCH] plugin/extract: `shfmt` --- plugins/available/extract.plugin.bash | 120 +++++++++++++------------- 1 file changed, 61 insertions(+), 59 deletions(-) diff --git a/plugins/available/extract.plugin.bash b/plugins/available/extract.plugin.bash index c10e4176..b32a35a9 100644 --- a/plugins/available/extract.plugin.bash +++ b/plugins/available/extract.plugin.bash @@ -3,75 +3,77 @@ about-plugin 'one command to extract them all...' # extract file(s) from compressed status function extract() { - local opt - local OPTIND=1 - while getopts "hv" opt; do - case "$opt" in - h) - cat < options: -h show this message and exit -v verbosely list files processed EOU - return - ;; - v) - local -r verbose='v' - ;; - ?) - extract -h >&2 - return 1 - ;; - esac - done - shift $((OPTIND-1)) + return + ;; + v) + local -r verbose='v' + ;; + ?) + extract -h >&2 + return 1 + ;; + esac + done + shift $((OPTIND - 1)) - [ $# -eq 0 ] && extract -h && return 1 - while [ $# -gt 0 ]; do - if [[ ! -f "$1" ]]; then - echo "extract: '$1' is not a valid file" >&2 - shift - continue - fi + [ $# -eq 0 ] && extract -h && return 1 + while [ $# -gt 0 ]; do + if [[ ! -f "$1" ]]; then + echo "extract: '$1' is not a valid file" >&2 + shift + continue + fi - local -r filename=$(basename -- $1) - local -r filedirname=$(dirname -- $1) - local targetdirname=$(sed 's/\(\.tar\.bz2$\|\.tbz$\|\.tbz2$\|\.tar\.gz$\|\.tgz$\|\.tar$\|\.tar\.xz$\|\.txz$\|\.tar\.Z$\|\.7z$\|\.nupkg$\|\.zip$\|\.war$\|\.jar$\)//g' <<< $filename) - if [ "$filename" = "$targetdirname" ]; then - # archive type either not supported or it doesn't need dir creation - targetdirname="" - else - mkdir -v "$filedirname/$targetdirname" - fi + local -r filename=$(basename -- $1) + local -r filedirname=$(dirname -- $1) + local targetdirname=$(sed 's/\(\.tar\.bz2$\|\.tbz$\|\.tbz2$\|\.tar\.gz$\|\.tgz$\|\.tar$\|\.tar\.xz$\|\.txz$\|\.tar\.Z$\|\.7z$\|\.nupkg$\|\.zip$\|\.war$\|\.jar$\)//g' <<< $filename) + if [ "$filename" = "$targetdirname" ]; then + # archive type either not supported or it doesn't need dir creation + targetdirname="" + else + mkdir -v "$filedirname/$targetdirname" + fi - if [ -f "$1" ]; then - case "$1" in - *.tar.bz2|*.tbz|*.tbz2) tar "x${verbose}jf" "$1" -C "$filedirname/$targetdirname" ;; - *.tar.gz|*.tgz) tar "x${verbose}zf" "$1" -C "$filedirname/$targetdirname" ;; - *.tar.xz|*.txz) tar "x${verbose}Jf" "$1" -C "$filedirname/$targetdirname" ;; - *.tar.Z) tar "x${verbose}Zf" "$1" -C "$filedirname/$targetdirname" ;; - *.bz2) bunzip2 "$1" ;; - *.deb) dpkg-deb -x${verbose} "$1" "${1:0:-4}" ;; - *.pax.gz) gunzip "$1"; set -- "$@" "${1:0:-3}" ;; - *.gz) gunzip "$1" ;; - *.pax) pax -r -f "$1" ;; - *.pkg) pkgutil --expand "$1" "${1:0:-4}" ;; - *.rar) unrar x "$1" ;; - *.rpm) rpm2cpio "$1" | cpio -idm${verbose} ;; - *.tar) tar "x${verbose}f" "$1" -C "$filedirname/$targetdirname" ;; - *.xz) xz --decompress "$1" ;; - *.zip|*.war|*.jar|*.nupkg) unzip "$1" -d "$filedirname/$targetdirname" ;; - *.Z) uncompress "$1" ;; - *.7z) 7za x -o"$filedirname/$targetdirname" "$1" ;; - *) echo "'$1' cannot be extracted via extract" >&2;; - esac - fi + if [ -f "$1" ]; then + case "$1" in + *.tar.bz2 | *.tbz | *.tbz2) tar "x${verbose}jf" "$1" -C "$filedirname/$targetdirname" ;; + *.tar.gz | *.tgz) tar "x${verbose}zf" "$1" -C "$filedirname/$targetdirname" ;; + *.tar.xz | *.txz) tar "x${verbose}Jf" "$1" -C "$filedirname/$targetdirname" ;; + *.tar.Z) tar "x${verbose}Zf" "$1" -C "$filedirname/$targetdirname" ;; + *.bz2) bunzip2 "$1" ;; + *.deb) dpkg-deb -x${verbose} "$1" "${1:0:-4}" ;; + *.pax.gz) + gunzip "$1" + set -- "$@" "${1:0:-3}" + ;; + *.gz) gunzip "$1" ;; + *.pax) pax -r -f "$1" ;; + *.pkg) pkgutil --expand "$1" "${1:0:-4}" ;; + *.rar) unrar x "$1" ;; + *.rpm) rpm2cpio "$1" | cpio -idm${verbose} ;; + *.tar) tar "x${verbose}f" "$1" -C "$filedirname/$targetdirname" ;; + *.xz) xz --decompress "$1" ;; + *.zip | *.war | *.jar | *.nupkg) unzip "$1" -d "$filedirname/$targetdirname" ;; + *.Z) uncompress "$1" ;; + *.7z) 7za x -o"$filedirname/$targetdirname" "$1" ;; + *) echo "'$1' cannot be extracted via extract" >&2 ;; + esac + fi - shift - done + shift + done } # Shorten extract alias xt='extract' -