1 # ------------------------------------------------------------------------------
 
   2 #          FILE:  extract.plugin.zsh
 
   3 #   DESCRIPTION:  oh-my-zsh plugin file.
 
   4 #        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
 
   6 # ------------------------------------------------------------------------------
 
  14   if (( $# == 0 )); then
 
  15     echo "Usage: extract [-option] [file ...]"
 
  18     echo "    -r, --remove    Remove archive."
 
  20     echo "Report bugs to <sorin.ionescu@gmail.com>."
 
  24   if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
 
  29   while (( $# > 0 )); do
 
  30     if [[ ! -f "$1" ]]; then
 
  31       echo "extract: '$1' is not a valid file" 1>&2
 
  37     file_name="$( basename "$1" )"
 
  38     extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
 
  40       (*.tar.gz|*.tgz) tar xvzf "$1" ;;
 
  41       (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
 
  42       (*.tar.xz|*.txz) tar --xz --help &> /dev/null \
 
  43         && tar --xz -xvf "$1" \
 
  44         || xzcat "$1" | tar xvf - ;;
 
  45       (*.tar.zma|*.tlz) tar --lzma --help &> /dev/null \
 
  46         && tar --lzma -xvf "$1" \
 
  47         || lzcat "$1" | tar xvf - ;;
 
  48       (*.tar) tar xvf "$1" ;;
 
  50       (*.bz2) bunzip2 "$1" ;;
 
  52       (*.lzma) unlzma "$1" ;;
 
  53       (*.Z) uncompress "$1" ;;
 
  54       (*.zip) unzip "$1" -d $extract_dir ;;
 
  55       (*.rar) unrar e -ad "$1" ;;
 
  58         mkdir -p "$extract_dir/control"
 
  59         mkdir -p "$extract_dir/data"
 
  60         cd "$extract_dir"; ar vx "../${1}" > /dev/null
 
  61         cd control; tar xzvf ../control.tar.gz
 
  62         cd ../data; tar xzvf ../data.tar.gz
 
  63         cd ..; rm *.tar.gz debian-binary
 
  67         echo "extract: '$1' cannot be extracted" 1>&2
 
  72     (( success = $success > 0 ? $success : $? ))
 
  73     (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"