blob: 3a6eaf212473a309824ede876a921f31e594ef4b (
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
|
#compdef port
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for MacPorts (http://www.macports.org).
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Matt Cable <wozz@wookie.net>
# * Sorin Ionescu <sorin.ionescu@gmail.com>
# * Aljaž Srebrnič <a2piratesoft@gmail.com>
#
# ------------------------------------------------------------------------------
_port() {
# Variables for _argument
typeset -A opt_args
local context state state_descr line
local -a upgrade_options revupgrade_options select_options \
actions pseudo_common pseudo_advanced port_prefix
port_prefix=$(which port | sed 's|/bin/port||')
actions=(
'activate\:Activate\ the\ given\ ports'
'archive\:Archive\ the\ given\ ports,\ i.e.\ install\ the\ port\ image\ but\ do\ not\ activate'
'archivefetch\:Fetch\ archive\ for\ the\ given\ ports'
'build\:Build\ the\ given\ ports'
'cat\:Writes\ the\ Portfiles\ of\ the\ given\ ports\ to\ stdout'
'checksum\:Compares\ the\ checksums\ for\ the\ downloaded\ files\ of\ the\ given\ ports'
'clean\:Removes\ files\ associated\ with\ the\ given\ ports'
'configure\:Configure\ the\ given\ ports'
'contents\:\Returns\ a\ list\ of\ files\ installed\ by\ given\ ports'
'deactivate\:Deactivates\ the\ given\ ports'
'dependents\:Returns\ a\ list\ of\ installed\ dependents\ for\ each\ of\ the\ given\ ports'
'deps\:Display\ a\ dependency\ listing\ for\ the\ given\ ports'
'destroot\:Destroot\ the\ given\ ports'
'dir\:Returns\ the\ directories\ of\ the\ given\ ports'
'distcheck\:Checks\ if\ the\ given\ ports\ can\ be\ fetched\ from\ all\ of\ its\ master_sites'
'distfiles\:Returns\ a\ list\ of\ distfiles\ for\ the\ given\ port'
'dmg\:Creates\ a\ dmg\ for\ each\ of\ the\ given\ ports'
'dpkg\:Creates\ a\ dpkg\ for\ each\ of\ the\ given\ ports'
'echo\:Returns\ the\ list\ of\ ports\ the\ argument\ expands\ to'
'edit\:Edit\ given\ ports'
'extract\:Extract\ the\ downloaded\ files\ of\ the\ given\ ports'
'fetch\:Downloaded\ distfiles\ for\ the\ given\ ports'
'file\:Returns\ the\ path\ to\ the\ Portfile\ for\ each\ of\ the\ given\ ports'
'gohome\:Opens\ the\ homepages\ of\ the\ given\ ports\ in\ your\ browser'
'help\:Displays\ short\ help\ texts\ for\ the\ given\ actions'
'info\:Returns\ information\ about\ the\ given\ ports '
'install\:Installs\ the\ given\ ports'
'installed\:List\ installed\ versions\ of\ the\ given\ port,\ or\ all\ installed\ ports\ if\ no\ port\ is\ given'
'lint\:Checks\ if\ the\ Portfile\ is\ lint-free\ for\ each\ of\ the\ given\ ports'
'list\:List\ the\ available\ version\ for\ each\ of\ the\ given\ ports'
'livecheck\:Checks\ if\ a\ new\ version\ of\ the\ software\ is\ available'
'load\:Interface\ to\ launchctl(1)\ for\ ports\ providing\ startup\ items'
'location\:Returns\ the\ install\ location\ for\ each\ of\ the\ given\ ports'
'log\:Shows\ main\ log\ for\ given\ ports'
'logfile\:Returns\ the\ log\ file\ path\ for\ each\ of\ the\ given\ ports'
'mdmg\:Creates\ a\ dmg\ containing\ an\ mpkg\ for\ each\ of\ the\ given\ ports\ and\ their\ dependencies'
'mirror\:Fetches\ distfiles\ for\ the\ given\ ports'
'mpkg\:Creates\ an\ mpkg\ for\ each\ of\ the\ given\ ports\ and\ their\ dependencies'
'notes\:Displays\ informational\ notes\ for\ each\ of\ the\ given\ ports'
'outdated\:Returns\ a\ list\ of\ outdated\ ports'
'patch\:Applies\ patches\ to\ each\ of\ the\ given\ ports'
'pkg\:Creates\ a\ pkg\ for\ each\ of\ the\ given\ ports'
'platform\:Returns\ the\ current\ platform\ that\ port\ is\ running\ on'
'provides\:Return\ which\ port\ provides\ each\ of\ the\ files\ given'
'rdependents\:Recursive\ version\ of\ dependents'
'rdeps\:Display\ a\ recursive\ dependency\ listing\ for\ the\ given\ ports'
'rev-upgrade\:Scan\ for\ broken\ binaries\ in\ the\ installed\ ports\ and\ rebuild\ them\ as\ needed'
'rpm\:Creates\ a\ rpm\ for\ each\ of\ the\ given\ ports'
'search\:Search\ for\ a\ port'
'select\:Select\ between\ multiple\ versions\ of\ a\ versioned\ port'
'selfupdate\:Upgrade\ MacPorts\ itself\ and\ run\ the\ sync\ target'
'setrequested\:Marks\ each\ of\ the\ given\ ports\ as\ requested'
'space\:Show\ the\ disk\ space\ used\ by\ the\ given\ ports'
'srpm\:Creates\ a\ srpm\ for\ each\ of\ the\ given\ ports'
'sync\:Synchronize\ the\ set\ of\ Portfiles'
'test\:Run\ tests\ on\ each\ of\ the\ given\ ports'
'unarchive\:Unarchive\ the\ destroot\ of\ the\ given\ ports\ from\ installed\ images'
'uninstall\:Uninstall\ the\ given\ ports'
'unload\:Interface\ to\ launchctl(1)\ for\ ports\ providing\ startup\ items'
'unsetrequested\:Marks\ each\ of\ the\ given\ ports\ as\ unrequested'
'upgrade\:Upgrades\ the\ given\ ports\ to\ the\ latest\ version'
'url\:Returns\ the\ URL\ for\ each\ of\ the\ given\ ports'
'usage\:Returns\ basic\ usage\ of\ the\ port\ command'
'variants\:Returns\ a\ list\ of\ variants\ provided\ by\ the\ given\ ports,\ with\ descriptions\ if\ present'
'version\:Returns\ the\ version\ of\ MacPorts'
'work\:Returns\ the\ path\ to\ the\ work\ directory\ for\ each\ of\ the\ given\ ports'
)
pseudo_common=(all current active inactive actinact installed uninstalled outdated
obsolete requested unrequested leaves)
pseudo_advanced=('variants:' 'variant:' 'description:' 'depends:'
'depends_lib:' 'depends_run:' 'depends_build:' 'depends_fetch:' 'depends_extract:'
'portdir:' 'homepage:' 'epoch:' 'platforms:' 'platform:' 'name:' 'long_description:'
'maintainers:' 'maintainer:' 'categories:' 'category:' 'version:' 'revision:' 'license:')
select_options=(
'--list:List available versions for the group'
'--set:Select the given version for the group'
'--show:Show which version is currently selected for the group (default if none given)'
)
revupgrade_options=('--id-loadcmd-check:Run more checks against a special loadcommand in Mach-O binaries')
upgrade_options=(
'--force\:Ignore\ circumstances\ that\ would\ normally\ cause\ ports\ to\ be\ skipped\ \(e.g.\ not\ outdated\).' \
'--enforce-variants\:If\ the\ installed\ variants\ do\ not\ match\ those\ requested,\ upgrade\ even\ if\ the\ port\ is\ not\ outdated.' \
'--no-replace\:Do\ not\ replace\ one\ port\ with\ another\ according\ to\ the\ replaced_by\ field.' \
)
_arguments -s -C \
'-v[Verbose mode (generate verbose messages)]' \
'-d[Debug mode (generate debugging messages, implies -v)]' \
'-q[Quiet mode (suppress messages)]' \
"-n[Don't upgrade dependencies (affects upgrade and install)]" \
"-R[Also upgrade dependents (only affects upgrade) - note that this does not upgrade dependents' dependencies]" \
'-u[Uninstall non-active ports when upgrading and uninstalling]' \
'-f[Force mode (ignore state file)]' \
'-o[Honor state files even if the Portfile has been modified since (called -o because it used to mean "older")]' \
'-s[Source-only mode (build and install from source, do not attempt to fetch binary archives)]' \
'-b[Binary-only mode (build and install from binary archives, ignore source, abort if no archive available)]' \
'-c[Autoclean mode (execute clean after install)]' \
"-k[Keep mode (don't autoclean after install)]" \
'-D[Specify portdir]' \
'-F[Read and process the file of commands specified by the argument.]' \
'-p[Despite any errors encountered, proceed to process multiple ports and commands.]' \
'-y[Perform a dry run.]' \
'-t[Enable trace mode debug facilities on platforms that support it (Mac OS X).]' \
"1:Port actions:(($actions))" \
'*:extra:->extra' \
&& return 0
case "$state" in
extra)
_port_dispatch
;;
esac
}
_port_dispatch() {
local cache_policy
zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
zstyle ":completion:${curcontext}:" cache-policy ${cache_policy:-_port_caching_policy}
case "$words[2]" in
provides)
_files
;;
search)
_message 'pattern'
;;
help)
_describe -t actions 'Port actions' actions
;;
select)
_call_function - _port_select
;;
contents|deactivate|setrequested|space|uninstall|unsetrequested)
# Cache the list of installed ports.
if ( [[ ${+_port_installed_packages} -eq 0 ]] || _cache_invalid PORT_INSTALLED_PACKAGES ) &&
! _retrieve_cache PORT_INSTALLED_PACKAGES;
then
_port_installed_packages=( $(_call_program path-all "port -q echo installed") )
_store_cache PORT_INSTALLED_PACKAGES _port_installed_packages
fi
_alternative \
"ports:Installed ports:($_port_installed_packages)" \
"pseudo-common:Common Pseudo-portnames:($pseudo_common)" \
"pseudo-advanced:Advanced Pseudo-portnames:($pseudo_advanced)"
;;
upgrade)
# No good reason to actually cache outdated ports list
local outdated_packages
outdated_packages=( $(_call_program path-outdated "port -q echo outdated") )
_alternative -- \
"upgrade-options:Upgrade options:(($upgrade_options))" \
"ports:Outdated ports:($outdated_packages)" \
"pseudo-common:Common Pseudo-portnames:($pseudo_common)" \
"pseudo-advanced:Advanced Pseudo-portnames:($pseudo_advanced)"
;;
rev-upgrade)
if (( CURRENT == 3 )); then
_describe 'Rev-upgrade options' revupgrade_options
fi
;;
*)
# Cache the list of all ports.
if ( [[ ${+_port_available_packages} -eq 0 ]] || _cache_invalid PORT_AVAILABLE_PACKAGES ) &&
! _retrieve_cache PORT_AVAILABLE_PACKAGES;
then
_port_available_packages=( $(_call_program path-all "port -q echo all") )
_store_cache PORT_AVAILABLE_PACKAGES _port_available_packages
fi
_alternative \
"ports:Available ports:($_port_available_packages)" \
"pseudo-common:Common Pseudo-portnames:($pseudo_common)" \
"pseudo-advanced:Advanced Pseudo-portnames:($pseudo_advanced)"
;;
esac
}
_port_select() {
if (( CURRENT == 3 )); then
_describe 'Port select options' select_options
elif (( CURRENT == 4 )); then
local select_group
select_group=()
for f in $port_prefix/etc/select/*; do
select_group+=$(basename $f)
done
_describe "Port select groups" select_group
elif [[ $CURRENT -eq 5 && $words[3] == '--set' ]]; then
local select_variants
select_variants=("${(f)$(port select --list $words[4] | sed -e '1 d' -e 's/^[ \t]*//' -e 's/ (active)$//')}")
_describe "Port select group $words[4] variants" select_variants
fi
}
_port_caching_policy() {
local reg_time comp_time
reg_time=$(stat -c '%Z' $port_prefix/var/macports/registry/registry.db)
comp_time=$(stat -c '%Z' $1)
return $(( reg_time < comp_time ))
}
_port "$@"
|