No need to set cache policy in the main function
The caching policy style for _port can be set in _port_dispatch, as it is the one that uses caching.
This commit is contained in:
parent
0b791a2f50
commit
77df22a969
36
src/_port
36
src/_port
|
@ -116,12 +116,6 @@ _port() {
|
|||
'--no-replace\:Do\ not\ replace\ one\ port\ with\ another\ according\ to\ the\ replaced_by\ field.' \
|
||||
)
|
||||
|
||||
local cache_policy
|
||||
zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
|
||||
if [[ -z "$cache_policy" ]]; then
|
||||
zstyle ":completion:${curcontext}:" cache-policy _port_caching_policy
|
||||
fi
|
||||
|
||||
_arguments -s -C \
|
||||
'-v[Verbose mode (generate verbose messages)]' \
|
||||
'-d[Debug mode (generate debugging messages, implies -v)]' \
|
||||
|
@ -141,17 +135,15 @@ _port() {
|
|||
'-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' \
|
||||
'*:extra:_port_dispatch' \
|
||||
&& 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
|
||||
|
@ -170,7 +162,7 @@ _port_dispatch() {
|
|||
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 echo installed | cut -d ' ' -f 1") )
|
||||
_port_installed_packages=( $(_call_program path-all "port -q echo installed") )
|
||||
_store_cache PORT_INSTALLED_PACKAGES _port_installed_packages
|
||||
fi
|
||||
_alternative \
|
||||
|
@ -181,7 +173,7 @@ _port_dispatch() {
|
|||
upgrade)
|
||||
# No good reason to actually cache outdated ports list
|
||||
local outdated_packages
|
||||
outdated_packages=( $(_call_program path-outdated "port echo outdated | cut -d ' ' -f 1") )
|
||||
outdated_packages=( $(_call_program path-outdated "port -q echo outdated") )
|
||||
_alternative -- \
|
||||
"upgrade-options:Upgrade options:(($upgrade_options))" \
|
||||
"ports:Outdated ports:($outdated_packages)" \
|
||||
|
@ -198,7 +190,7 @@ _port_dispatch() {
|
|||
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 echo all") )
|
||||
_port_available_packages=( $(_call_program path-all "port -q echo all") )
|
||||
_store_cache PORT_AVAILABLE_PACKAGES _port_available_packages
|
||||
fi
|
||||
_alternative \
|
||||
|
@ -227,8 +219,16 @@ _port_select() {
|
|||
}
|
||||
|
||||
_port_caching_policy() {
|
||||
local reg_time comp_time
|
||||
reg_time=$(stat -c '%Z' $port_prefix/var/macports/registry/registry.db)
|
||||
local reg_time comp_time check_file
|
||||
case "${1##*/}" in
|
||||
PORT_INSTALLED_PACKAGES)
|
||||
check_file=$port_prefix/var/macports/registry/registry.db
|
||||
;;
|
||||
PORT_AVAILABLE_PACKAGES)
|
||||
check_file=${$(port dir MacPorts)%/*/*}/PortIndex
|
||||
;;
|
||||
esac
|
||||
reg_time=$(stat -c '%Z' $check_file)
|
||||
comp_time=$(stat -c '%Z' $1)
|
||||
return $(( reg_time < comp_time ))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue