aboutsummaryrefslogtreecommitdiff
path: root/.scripts/ext
blob: a1b9d0e0d992881c0fc7d1c2d3f783c4cf066a2d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env sh

archive="$(readlink -f "$*")" &&
    directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
    mkdir -p "$directory" &&
    cd "$directory" || exit

[ "$archive" = "" ] && printf "Give archive to extract as argument\\n" && exit

if [ -f "$archive" ]; then
    case "$archive" in
    *.tar.bz2 | *.tbz2) tar xvjf "$archive" ;;
    *.tar.xz) tar -xf "$archive" ;;
    *.tar.gz | *.tgz) tar xvzf "$archive" ;;
    *.tar.lz) tar --lzip -xvf "$archive" ;;
    *.lzma) unlzma "$archive" ;;
    *.bz2) bunzip2 "$archive" ;;
    *.rar) unrar x -ad "$archive" ;;
    *.gz) gunzip "$archive" ;;
    *.tar) tar xvf "$archive" ;;
    *.zip) unzip "$archive" ;;
    *.Z) uncompress "$archive" ;;
    *.7z) 7z x "$archive" ;;
    *.xz) unxz "$archive" ;;
    *.exe) cabextract "$archive" ;;
    *) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
    esac
else
    printf "File \"%s\" not found\\n" "$archive"
fi