_extract
598 bytes
1#compdef extract
2#autoload
3
4local -a exts=(
5 7z
6 aar
7 apk
8 bz2
9 cab
10 cpio
11 crx
12 deb
13 ear
14 gz
15 ipa
16 ipsw
17 jar
18 lrz
19 lz4
20 lzma
21 obscpio
22 pk3
23 pk4
24 pk7
25 rar
26 rpm
27 sublime-package
28 tar
29 tar.bz2
30 tar.gz
31 tar.lrz
32 tar.lz
33 tar.lz4
34 tar.xz
35 tar.zma
36 tar.zst
37 tbz
38 tbz2
39 tgz
40 tlz
41 txz
42 tzst
43 vsix
44 war
45 whl
46 xpi
47 xz
48 Z
49 zip
50 zpaq
51 zst
52)
53
54_arguments \
55 '(-r --remove)'{-r,--remove}'[Remove archive.]' \
56 '(-t --to-directory)'{-t,--to-directory}'[Extract to a specific directory.]' \
57 "*::archive file:_files -g '(#i)*.(${(j:|:)exts})(-.)'" \
58 && return 0