dots2/.antidote/tests/test_fpath_rules.md

2.9 KiB

antidote bundle fpath-rule:

Setup

% source ./tests/_setup.zsh
% source ./antidote.zsh
%

By default, fpath is appended to:

% antidote bundle foo/bar kind:fpath
fpath+=( $HOME/.cache/antidote/foo/bar )
%

fpath can be told to explicitly append, but it's unnecessary

% antidote bundle foo/bar kind:zsh fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/bar )
source $HOME/.cache/antidote/foo/bar/bar.plugin.zsh
%

fpath can be prepended with fpath-rule:prepend

```zsh
% antidote bundle foo/bar kind:fpath fpath-rule:prepend
fpath=( $HOME/.cache/antidote/foo/bar $fpath )
%

fpath rules can only be append/prepend

```zsh
% antidote bundle foo/bar kind:fpath fpath-rule:append #=> --exit 0
% antidote bundle foo/bar kind:fpath fpath-rule:prepend #=> --exit 0
% antidote bundle foo/bar kind:fpath fpath-rule:foo 2>&1
antidote: error: unexpected fpath rule: 'foo'
%

fpath rules are also used for `kind:autoload`

```zsh
% antidote bundle foo/baz path:baz kind:autoload fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/baz/baz )
builtin autoload -Uz $fpath[-1]/*(N.:t)
% antidote bundle foo/baz path:baz kind:autoload fpath-rule:prepend
fpath=( $HOME/.cache/antidote/foo/baz/baz $fpath )
builtin autoload -Uz $fpath[1]/*(N.:t)
%

fpath rules are also used for autoload:funcdir

% # Append
% antidote bundle foo/baz autoload:baz fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/baz/baz )
builtin autoload -Uz $fpath[-1]/*(N.:t)
fpath+=( $HOME/.cache/antidote/foo/baz )
source $HOME/.cache/antidote/foo/baz/baz.plugin.zsh
% # Prepend
% antidote bundle foo/baz autoload:baz fpath-rule:prepend
fpath=( $HOME/.cache/antidote/foo/baz/baz $fpath )
builtin autoload -Uz $fpath[1]/*(N.:t)
fpath=( $HOME/.cache/antidote/foo/baz $fpath )
source $HOME/.cache/antidote/foo/baz/baz.plugin.zsh
%

fpath rules can be set globally with a zstyle:

zstyle ':antidote:fpath' rule 'prepend'

% zstyle ':antidote:fpath' rule 'prepend'
% antidote bundle foo/bar
fpath=( $HOME/.cache/antidote/foo/bar $fpath )
source $HOME/.cache/antidote/foo/bar/bar.plugin.zsh
% antidote bundle foo/bar kind:fpath
fpath=( $HOME/.cache/antidote/foo/bar $fpath )
% antidote bundle foo/baz path:baz kind:autoload
fpath=( $HOME/.cache/antidote/foo/baz/baz $fpath )
builtin autoload -Uz $fpath[1]/*(N.:t)
%

It is NOT recommended to do this, but if you choose to then explicit fpath-rules are still respected:

% zstyle ':antidote:fpath' rule 'prepend'
% antidote bundle foo/bar fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/bar )
source $HOME/.cache/antidote/foo/bar/bar.plugin.zsh
% antidote bundle foo/bar kind:fpath fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/bar )
% antidote bundle foo/baz path:baz kind:autoload fpath-rule:append
fpath+=( $HOME/.cache/antidote/foo/baz/baz )
builtin autoload -Uz $fpath[-1]/*(N.:t)
%

Teardown

% t_teardown
%