plugin/extract: `shellcheck`
parent
32523a5e21
commit
1671df94f6
|
|
@ -98,6 +98,7 @@ plugins/available/colors.plugin.bash
|
||||||
plugins/available/direnv.plugin.bash
|
plugins/available/direnv.plugin.bash
|
||||||
plugins/available/dirs.plugin.bash
|
plugins/available/dirs.plugin.bash
|
||||||
plugins/available/docker-machine.plugin.bash
|
plugins/available/docker-machine.plugin.bash
|
||||||
|
plugins/available/extract.plugin.bash
|
||||||
plugins/available/gif.plugin.bash
|
plugins/available/gif.plugin.bash
|
||||||
plugins/available/git-subrepo.plugin.bash
|
plugins/available/git-subrepo.plugin.bash
|
||||||
plugins/available/git.plugin.bash
|
plugins/available/git.plugin.bash
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ about-plugin 'one command to extract them all...'
|
||||||
|
|
||||||
# extract file(s) from compressed status
|
# extract file(s) from compressed status
|
||||||
function extract() {
|
function extract() {
|
||||||
local opt
|
local opt OPTIND=1 verbose
|
||||||
local OPTIND=1
|
local filename filedirname targetdirname
|
||||||
while getopts "hv" opt; do
|
while getopts "hv" opt; do
|
||||||
case "$opt" in
|
case "$opt" in
|
||||||
h)
|
h)
|
||||||
|
|
@ -27,32 +27,37 @@ EOU
|
||||||
done
|
done
|
||||||
shift $((OPTIND - 1))
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
[ $# -eq 0 ] && extract -h && return 1
|
if [[ $# -eq 0 ]]; then
|
||||||
while [ $# -gt 0 ]; do
|
extract -h
|
||||||
if [[ ! -f "$1" ]]; then
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
if [[ ! -f "${1:-}" ]]; then
|
||||||
echo "extract: '$1' is not a valid file" >&2
|
echo "extract: '$1' is not a valid file" >&2
|
||||||
shift
|
shift
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local -r filename=$(basename -- $1)
|
local -r filename=$(basename -- "$1")
|
||||||
local -r filedirname=$(dirname -- $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)
|
# shellcheck disable=SC2001 # we don't depend on `extglob`...
|
||||||
if [ "$filename" = "$targetdirname" ]; then
|
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
|
# archive type either not supported or it doesn't need dir creation
|
||||||
targetdirname=""
|
targetdirname=""
|
||||||
else
|
else
|
||||||
mkdir -v "$filedirname/$targetdirname"
|
mkdir -v "$filedirname/$targetdirname"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$1" ]; then
|
if [[ -f "$1" ]]; then
|
||||||
case "$1" in
|
case "$1" in
|
||||||
*.tar.bz2 | *.tbz | *.tbz2) tar "x${verbose}jf" "$1" -C "$filedirname/$targetdirname" ;;
|
*.tar.bz2 | *.tbz | *.tbz2) tar "x${verbose}jf" "$1" -C "$filedirname/$targetdirname" ;;
|
||||||
*.tar.gz | *.tgz) tar "x${verbose}zf" "$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.xz | *.txz) tar "x${verbose}Jf" "$1" -C "$filedirname/$targetdirname" ;;
|
||||||
*.tar.Z) tar "x${verbose}Zf" "$1" -C "$filedirname/$targetdirname" ;;
|
*.tar.Z) tar "x${verbose}Zf" "$1" -C "$filedirname/$targetdirname" ;;
|
||||||
*.bz2) bunzip2 "$1" ;;
|
*.bz2) bunzip2 "$1" ;;
|
||||||
*.deb) dpkg-deb -x${verbose} "$1" "${1:0:-4}" ;;
|
*.deb) dpkg-deb -x"${verbose}" "$1" "${1:0:-4}" ;;
|
||||||
*.pax.gz)
|
*.pax.gz)
|
||||||
gunzip "$1"
|
gunzip "$1"
|
||||||
set -- "$@" "${1:0:-3}"
|
set -- "$@" "${1:0:-3}"
|
||||||
|
|
@ -61,7 +66,7 @@ EOU
|
||||||
*.pax) pax -r -f "$1" ;;
|
*.pax) pax -r -f "$1" ;;
|
||||||
*.pkg) pkgutil --expand "$1" "${1:0:-4}" ;;
|
*.pkg) pkgutil --expand "$1" "${1:0:-4}" ;;
|
||||||
*.rar) unrar x "$1" ;;
|
*.rar) unrar x "$1" ;;
|
||||||
*.rpm) rpm2cpio "$1" | cpio -idm${verbose} ;;
|
*.rpm) rpm2cpio "$1" | cpio -idm"${verbose}" ;;
|
||||||
*.tar) tar "x${verbose}f" "$1" -C "$filedirname/$targetdirname" ;;
|
*.tar) tar "x${verbose}f" "$1" -C "$filedirname/$targetdirname" ;;
|
||||||
*.xz) xz --decompress "$1" ;;
|
*.xz) xz --decompress "$1" ;;
|
||||||
*.zip | *.war | *.jar | *.nupkg) unzip "$1" -d "$filedirname/$targetdirname" ;;
|
*.zip | *.war | *.jar | *.nupkg) unzip "$1" -d "$filedirname/$targetdirname" ;;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue