From 05baab75dde151eaf099862f13a7ee67f5075ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20P=C3=A1l?= Date: Sat, 12 Jul 2014 23:33:17 +0200 Subject: [PATCH] exctract.plugin: added support for multiple compressors Added support for the LZMA, LZOP, XZ and lzip compressors and for the cpio archiver. Now works with files and paths containing whitespaces. --- plugins/available/extract.plugin.bash | 43 ++++++++++++++++++--------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/plugins/available/extract.plugin.bash b/plugins/available/extract.plugin.bash index bb520451..3389f2e0 100644 --- a/plugins/available/extract.plugin.bash +++ b/plugins/available/extract.plugin.bash @@ -6,20 +6,35 @@ extract () { echo "Error: No file specified." return 1 fi - if [ -f $1 ] ; then - case $1 in - *.tar.bz2) tar xvjf $1 ;; - *.tar.gz) tar xvzf $1 ;; - *.bz2) bunzip2 $1 ;; - *.rar) unrar x $1 ;; - *.gz) gunzip $1 ;; - *.tar) tar xvf $1 ;; - *.tbz2) tar xvjf $1 ;; - *.tgz) tar xvzf $1 ;; - *.zip) unzip $1 ;; - *.Z) uncompress $1 ;; - *.7z) 7z x $1 ;; - *) echo "'$1' cannot be extracted via extract" ;; + if [ -f "$1" ] ; then + case "$1" in + *.tar.bz2) tar xvjf "$1" ;; + *.tar.gz) tar xvzf "$1" ;; + *.tar.xz|*.txz) + xz -dc "$1" | tar xvf - ;; + *.tar.lzma) ( xz -dc "$1" || lzma -dc "$1" ) | tar xvf - ;; + *.tar.lzop) lzop -d -c "$1" | tar xvf - ;; + *.tar.lzip) lzip -d -c "$1" | tar xvf - ;; + *.cpio.gz|*.cpio.Z) + gzip -dc "$1" | cpio -itvm ;; + *.cpio.bz2) bzip2 -dc "$1" | cpio -itvm ;; + *.cpio.xz) xz -dc "$1" | cpio -itvm ;; + *.cpio) cpio -itvm < "$1" ;; + *.bz2) bunzip2 "$1" ;; + *.rar) unrar x "$1" ;; + *.gz) gunzip "$1" ;; + *.tar) tar xvf "$1" ;; + *.tbz2) tar xvjf "$1" ;; + *.tgz) tar xvzf "$1" ;; + *.zip) unzip "$1" ;; + *.jar) unzip "$1" ;; + *.Z) (uncompress "$1" || gzip -dc "$1") ;; + *.7z) 7z x "$1" ;; + *.lzma) (xz -dc "$1" || lzma -d "$1") ;; + *.lzop) lzop -d "$1" ;; + *.lzip) lzip -d "$1" ;; + *.xz) xz -d "$1" ;; + *) echo "'$1' cannot be extracted via extract" ;; esac else echo "'$1' is not a valid file"