summary refs log tree commit diff
path: root/Completion/Unix/Command/_rar
blob: 73b8db3d40474822ceccea7f01f7956cc0ddb064 (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#compdef rar unrar


_rar(){
    case $service in
        rar)
        _arguments -s \
        '*::rar command:_rar_command' 
        ;;
    unrar)
        _arguments -s \
        '*::unrar command:_unrar_command'
        ;;
    esac
}

_compression_level() {
    compression_level=
    _tags compression_level && { compadd "$@" -k compression_level || compadd "$@" ${(kv)=compression_level} }
}

_dico_size() {
    dico_size=(64 128 256 512 1024 2048 4096 a b c d e f g)
    _tags dico_size && { compadd "$@" -k dico_size || compadd "$@" ${(kv)=dico_size} }
}

_unrar_command () {
    cmd=(e l lt p t v vt x)
    if (( CURRENT == 1 ));then
        _tags cmd && { compadd "$@" -k cmd || compadd "$@" ${(kv)=cmd} }
    else
        _arguments -C  \
            '-ad[Append archive name to destination path]'\
            '-ap[Set path inside archive]'\
            '-av\-[Disable authenticity verification check]'\
            '-c\-[Disable comments show]'\
            '-cfg\-[Disable read configuration]'\
            '-cl\-[Convert names to lower case]'\
            '-cu[Convert names to upper case]'\
            '-dh[Open shared files]'\
            '-ep[Exclude paths from name]'\
            '-f[Freshen files]'\
            '-idp[Disable percentage display]'\
            '-ierr[Send all messages to stderr]'\
            '-inul[Disable all messages]'\
            '-kb[Keep broken extracted files]'\
            '-o\+[Overwrite existing files]'\
            '-o\-[Do not overwrite existing files]'\
            '-ow[Save or restore file owner and group]'\
            '-p\-[Do not query password]'\
            '-r[Recurse subdirectorie]'\
            '-ta[Process files modified after <date> in YYYYMMDDHHMMSS format]'\
            '-tb[Process files modified before <date> in YYYYMMDDHHMMSS format]'\
            '-tn[Process files newer than <time>]'\
            '-to[Process files older than <time>]'\
            '-u[Update files]'\
            '-v[Create volumes with size autodetection or list all volumes]'\
            '-ver[File version control]'\
            '-vp[Pause before each volume]'\
            '-x[Exclude specified file]'\
            '-y[Assume Yes on all queries]'\
            '*:RAR files:_files -g \*.rar' && return 0
    fi
}

_rar_command () {
    cmd=(a c cf cw d e f i k l lt m mf p r rc rr rv s t u v vt x)
    if (( CURRENT == 1 ));then
        _tags cmd && { compadd "$@" -k cmd || compadd "$@" ${(kv)=cmd} }
    else
        _arguments -s \
            '-ad[Append archive name to destination path]'\
            '-ag[Generate archive name using the current date]'\
            '-ap[Set path inside archive]'\
            '-as[Synchronize archive contents]'\
            '-av[Put authenticity verification (registered versions only)]'\
            '-av\-[Disable authenticity verification check]'\
            '-c\-[Disable comments show]'\
            '-cfg\-[Disable read configuration]'\
            '-cl\-[Convert names to lower case]'\
            '-cu[Convert names to upper case]'\
            '-df[Delete files after archiving]'\
            '-dh[Open shared files]'\
            '-ds[Disable name sort for solid archive]'\
            '-e[Set file exclude attributes]'\
            '-ed[Do not add empty directories]'\
            '-en[Do not put end of archive block]'\
            '-ep[Exclude paths from name]'\
            '-ep1[Exclude base directory from names]'\
            '-ep2[Expand paths to full]'\
            '-f[Freshen files]'\
            '-hp[Encrypt both file data and headers]'\
            '-idp[Disable percentage display]'\
            '-ierr[Send all messages to stderr]'\
            '-ilog[Log errors to file (registered versions only)]'\
            '-inul[Disable all messages]'\
            '-isnd[Enable sound]'\
            '-k[Lock archive]'\
            '-kb[Keep broken extracted files]'\
            '-m+[Set compression level (0-store...3-default...5-maximal)]:compression level:(( 0\:store 1\:fastest 2\:fast 3\:normal 4\:good 5\:maximal ))'\
            '-md+[Dictionary size in KB]:dictionaty size in KB:_dico_size' \
            '-ms[Specify file types to store]'\
            '-o\+[Overwrite existing files]'\
            '-o\-[Do not overwrite existing files]'\
            '-ol[Save symbolic links as the link instead of the file]'\
            '-ow[Save or restore file owner and group]'\
            '-p[Set password]'\
            '-p\-[Do not query password]'\
            '-r[Recurse subdirectorie]'\
            '-r0[Recurse subdirectories for wildcard names only]'\
            '-rr[Add data recovery record]'\
            '-rv[Create recovery volumes]'\
            '-s[Create solid archive]'\
            '-se[Create solid archive using extension]'\
            '-sv[Create solid archive using volumes]'\
            '-s\-[Disable solid archiving]'\
            '-sfx[Create SFX archive]'\
            '-t[Test files after archiving]'\
            '-ta[Process files modified after <date> in YYYYMMDDHHMMSS format]'\
            '-tb[Process files modified before <date> in YYYYMMDDHHMMSS format]'\
            '-tk[Keep original archive time]'\
            '-tl[Set archive time to latest file]'\
            '-tn[Process files newer than <time>]'\
            '-to[Process files older than <time>]'\
            '-u[Update files]'\
            '-v[Create volumes with size autodetection or list all volumes]'\
            '-ver[File version control]'\
            '-vn[Use the old style volume naming scheme]'\
            '-vp[Pause before each volume]'\
            '-w+[Assign work directory]:work directory:_files -/'\
            '-x[Exclude specified file]'\
            '-y[Assume Yes on all queries]'\
            '-z+[Read archive comment from file]:comment file:_files' \
            '*:files:_files'
    fi
}
_rar "$@"