#!/bin/bash

if [ $# -lt 1 ];then
  echo "Usage: `basename $0` FILES"
  exit 1
fi

extract () {
	arg="$1"
		cd "$(dirname "$arg")" || exit
            case "$arg" in
                *.tar.bz2) 
					tar xjf "$arg" --one-top-level ;;
                *.tar.gz)
					tar xzf "$arg" --one-top-level ;;
                *.bz2) bunzip2 "$arg"  ;;
                *.gz)  gunzip "$arg"       ;;
                *.tar) tar xf "$arg" --one-top-level ;;
                *.tbz2) tar xjf "$arg" --one-top-level ;;
                *.tgz) tar xzf "$arg" --one-top-level ;;
                *.zip)
					a_dir=`expr "$arg" : '\(.*\).zip'`
					7z "$arg" -o"$a_dir"       ;;
                *.Z)  uncompress "$arg"   ;;
                *.rar)
					a_dir=`expr "$arg" : '\(.*\).rar'` ;
					mkdir "$a_dir" ;
					7z x "$arg" -o"$a_dir"      ;;
                *)          echo "'$arg' cannot be extracted via extract()" ;;
            esac
		cd - || exit
}

extract "$1"
