sheldon 0.5.2

A fast, configurable, shell plugin manager.
Documentation
# Example ~/.zsh/plugins.toml file
# --------------------------------

# Global matches, if a plugin doesn't provide a `use` field then the first one
# of the following that matches more than zero files will be used.
match = [
  "{{ name }}.zsh",
  "*.zsh",
  "*.sh",
]

# Global templates to apply by default, if a plugin doesn't provide an `apply`
# field then these will be used.
apply = ["PATH", "source"]

# Custom user defined templates, the `each` field means that these will be
# applied for all matched files.
[templates]
function = { value = 'ln -sf "{{ file }}" "{{ root }}/functions/{{ name }}"', each = true }
prompt = { value = 'ln -sf "{{ file }}" "{{ root }}/functions/prompt_{{ name }}_setup"', each = true }

[plugins.async]
# `github` sources provide the repository in the form {username}/{repository}.
github = "mafredri/zsh-async"
# `github', `git`, or `gist` sources may provide a `branch`, `tag`, or `rev`.
tag = "v1.7.1"
# All plugins can specify the template names that will be applied.
apply = ["function"]

[plugins.pure]
# `git` sources must provide the Git URL.
git = "https://github.com/sindresorhus/pure"
# All plugins can specify the template names that will be applied.
apply = ["prompt"]
# All plugins can specify which files templates should be applied to.
use = ["{{ name }}.zsh"]

[plugins.pyenv]
# `local` sources must provide the path to the source directory.
local = "~/.dotfiles/plugins/pyenv"

[plugins.ip-netns]
# `inline` plugins should provide the raw source.
inline = """
# Get ip netns information
ip_netns_prompt_info() {
  if (( $+commands[ip] )); then
    local ref="$(ip netns identify $$)"
    if [[ ! -z "$ref" ]]; then
      echo "${ZSH_THEME_IP_NETNS_PREFIX:=(}${ref}${ZSH_THEME_IP_NETNS_SUFFIX:=)}"
    fi
  fi
}
"""

[plugins.docker-destroy-all]
# `gist` sources must be provide the Gist identifier.
gist = "79ee61f7c140c63d2786"
# All plugins can specify the template names that will be applied.
apply = ["PATH"]