{"id":13595142,"url":"https://github.com/rossmacarthur/sheldon","last_synced_at":"2025-05-14T00:08:51.313Z","repository":{"id":41153661,"uuid":"173543221","full_name":"rossmacarthur/sheldon","owner":"rossmacarthur","description":":bowtie: Fast, configurable, shell plugin manager","archived":false,"fork":false,"pushed_at":"2025-03-09T11:25:21.000Z","size":2609,"stargazers_count":1150,"open_issues_count":16,"forks_count":22,"subscribers_count":9,"default_branch":"trunk","last_synced_at":"2025-04-12T15:56:17.928Z","etag":null,"topics":["bash","oh-my-zsh","plugin","plugin-manager","shell","zsh"],"latest_commit_sha":null,"homepage":"https://sheldon.cli.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rossmacarthur.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-03T07:16:01.000Z","updated_at":"2025-04-12T12:47:27.000Z","dependencies_parsed_at":"2023-11-19T09:29:01.988Z","dependency_job_id":"4f261d1a-831d-441a-a97a-8384a4b8a952","html_url":"https://github.com/rossmacarthur/sheldon","commit_stats":{"total_commits":286,"total_committers":8,"mean_commits":35.75,"dds":"0.045454545454545414","last_synced_commit":"8ba75aa5be1911b2cba1e104e514299e1a361dab"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossmacarthur%2Fsheldon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossmacarthur%2Fsheldon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossmacarthur%2Fsheldon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rossmacarthur%2Fsheldon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rossmacarthur","download_url":"https://codeload.github.com/rossmacarthur/sheldon/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254044034,"owners_count":22005063,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","oh-my-zsh","plugin","plugin-manager","shell","zsh"],"created_at":"2024-08-01T16:01:44.710Z","updated_at":"2025-05-14T00:08:46.304Z","avatar_url":"https://github.com/rossmacarthur.png","language":"Rust","readme":"\u003c!-- Generated by cargo-onedoc. DO NOT EDIT. --\u003e\n\n# sheldon\n\n*Fast, configurable, shell plugin manager*\n\n[![Crates.io version](https://badgers.space/crates/version/sheldon)](https://crates.io/crates/sheldon)\n[![Download](https://badgers.space/github/release/rossmacarthur/sheldon)](https://github.com/rossmacarthur/sheldon/releases/latest)\n[![License](https://badgers.space/github/license/rossmacarthur/sheldon)](https://github.com/rossmacarthur/sheldon#license)\n[![Build Status](https://badgers.space/github/checks/rossmacarthur/sheldon/trunk?label=build)](https://github.com/rossmacarthur/sheldon/actions/workflows/build.yaml)\n\n## Features\n\n- Plugins from Git repositories.\n  - Branch / tag / commit support.\n  - Submodule support.\n  - First class support for GitHub repositories.\n  - First class support for Gists.\n- Arbitrary remote scripts or binary plugins.\n- Local plugins.\n- Inline plugins.\n- Highly configurable install methods using templates.\n- Shell agnostic, with sensible defaults for Bash or Zsh\n- Super-fast plugin loading and parallel installation. See [benchmarks].\n- Config file using [TOML](https://toml.io) syntax.\n- Clean  `~/.bashrc` or `~/.zshrc` (just add 1 line).\n\n[benchmarks]: https://github.com/rossmacarthur/zsh-plugin-manager-benchmark\n\n## Table of Contents\n\n- [📦 Installation](#-installation)\n  - [Nix](#nix)\n  - [Homebrew](#homebrew)\n  - [Cargo](#cargo)\n  - [Cargo BInstall](#cargo-binstall)\n  - [Pre-built binaries](#pre-built-binaries)\n  - [Building from source](#building-from-source)\n- [🚀 Getting started](#-getting-started)\n  - [Initializing](#initializing)\n  - [Adding a plugin](#adding-a-plugin)\n  - [Loading plugins](#loading-plugins)\n- [💻 Command line interface](#-command-line-interface)\n  - [`init`](#init)\n  - [`lock`](#lock)\n  - [`source`](#source)\n  - [`add`](#add)\n  - [`edit`](#edit)\n  - [`remove`](#remove)\n  - [Options](#options)\n      - [`--color \u003cwhen\u003e`](#--color-when)\n      - [`--config-dir \u003cpath\u003e`](#--config-dir-path)\n      - [`--data-dir \u003cpath\u003e`](#--data-dir-path)\n      - [`--config-file \u003cpath\u003e`](#--config-file-path)\n      - [`--profile \u003cprofile\u003e`](#--profile-profile)\n  - [Completions](#completions)\n- [⚙️ Configuration](#️-configuration)\n  - [Plugin sources](#plugin-sources)\n    - [Git](#git)\n      - [`github`](#github)\n      - [`gist`](#gist)\n      - [`git`](#git-1)\n      - [Specifying a branch, tag, or commit](#specifying-a-branch-tag-or-commit)\n      - [Cloning with Git or SSH protocols](#cloning-with-git-or-ssh-protocols)\n      - [Private Git repositories](#private-git-repositories)\n    - [Remote](#remote)\n    - [Local](#local)\n  - [Plugin options](#plugin-options)\n    - [`use`](#use)\n    - [`apply`](#apply)\n    - [`profiles`](#profiles)\n    - [`hooks`](#hooks)\n  - [Inline plugins](#inline-plugins)\n  - [Templates](#templates)\n    - [Custom templates](#custom-templates)\n  - [Global options](#global-options)\n    - [`shell`](#shell)\n    - [`match`](#match)\n    - [`apply`](#apply-1)\n- [💡 Examples](#-examples)\n- [License](#license)\n\n## 📦 Installation\n\n### Nix\n\nThis repository is a flake, and can be installed using nix profile:\n\n```\nnix profile install \"github:rossmacarthur/sheldon\"\n```\n\n### Homebrew\n\nSheldon can be installed using Homebrew.\n\n```sh\nbrew install sheldon\n```\n\n### Cargo\n\nSheldon can be installed from [Crates.io](https://crates.io/crates/sheldon)\nusing [Cargo](https://doc.rust-lang.org/cargo/), the Rust package manager.\n\n```sh\ncargo install sheldon\n```\n\nIn some circumstances this can fail due to the fact that Cargo does not use\n`Cargo.lock` file by default. You can force Cargo to use it using the `--locked`\noption.\n\n```sh\ncargo install sheldon --locked\n```\n\n### Cargo BInstall\n\nSheldon can be installed using\n[`cargo-binstall`](https://github.com/cargo-bins/cargo-binstall), which will\ndownload the release artifacts directly from the GitHub release.\n\n```sh\ncargo binstall sheldon\n```\n\n### Pre-built binaries\n\nPre-built binaries for Linux (x86-64, aarch64, armv7) and macOS (x86-64) are\nprovided. These can be downloaded directly from the [the releases\npage](https://github.com/rossmacarthur/sheldon/releases).\n\nAlternatively, the following script can be used to automatically detect your host\nsystem, download the required artifact, and extract the `sheldon` binary to the\ngiven directory.\n\n```sh\ncurl --proto '=https' -fLsS https://rossmacarthur.github.io/install/crate.sh \\\n    | bash -s -- --repo rossmacarthur/sheldon --to ~/.local/bin\n```\n\n### Building from source\n\nSheldon is written in Rust, so to install it from source you will first need to\ninstall Rust and Cargo using [rustup](https://rustup.rs/). Then you can run the\nfollowing to build Sheldon.\n\n```sh\ngit clone https://github.com/rossmacarthur/sheldon.git\ncd sheldon\ncargo build --release\n```\n\nThe binary will be found at `target/release/sheldon`.\n\n## 🚀 Getting started\n\n### Initializing\n\nSheldon works by specifying plugin information in a [TOML](https://toml.io)\nconfiguration file, `plugins.toml`. You can initialize this file by running\n`sheldon init`.\n\n```sh\nsheldon init --shell bash\n```\n\nor\n\n```sh\nsheldon init --shell zsh\n```\n\nThis will create `plugins.toml` under `$XDG_CONFIG_HOME/sheldon`, on most\nsystems this will be `~/.config/sheldon/plugins.toml`. You can either edit this\nfile directly or use the provided command line interface to add or remove\nplugins.\n\n### Adding a plugin\n\nTo add your first plugin append the following to the Sheldon config file.\n\n```toml\n# ~/.config/sheldon/plugins.toml\n\n[plugins.base16]\ngithub = \"chriskempson/base16-shell\"\n```\n\nOr use the `add` command to automatically add it.\n\n```sh\nsheldon add base16 --github chriskempson/base16-shell\n```\n\nThe first argument given here `base16` is a unique name for the plugin. The\n`--github` option specifies that we want Sheldon to manage a clone of the\n[https://github.com/chriskempson/base16-shell](https://github.com/chriskempson/base16-shell)\nrepository.\n\n### Loading plugins\n\nYou can then use `sheldon source` to install this plugin, generate a lock file,\nand print out the shell script to source. Simply add the following to your\n`~/.zshrc` or `~/.bashrc` file.\n\n```sh\n# ~/.zshrc or ~/.bashrc\n\neval \"$(sheldon source)\"\n```\n\n## 💻 Command line interface\n\nSheldon has three different types of commands.\n\n- [`init`](#init) initializes a new config file.\n- [`lock`](#lock) and [`source`](#source) deal with plugin downloading,\n  installation, and generation of shell source code.\n- [`add`](#add), [`edit`](#edit), and [`remove`](#remove) automate editing of\n  the config file.\n\n### `init`\n\nThis command initializes a new config file. If a config file exists then this\ncommand does nothing.\n\nFor example\n\n```sh\nsheldon init\n```\n\nOr you can specify the shell.\n\n```sh\nsheldon init --shell bash\n```\n\nor\n\n```sh\nsheldon init --shell zsh\n```\n\n### `lock`\n\nThe `lock` command installs the plugins sources and generates the lock file.\nRerunning this command without any extra options will not reinstall plugin\nsources, just verify that they are correctly installed. It will always\nregenerate the lock file.\n\n```sh\nsheldon lock\n```\n\nTo update all plugin sources you can use the `--update` flag.\n\n```sh\nsheldon lock --update\n```\n\nTo force a reinstall of all plugin sources you can use the `--reinstall` flag.\n\n```sh\nsheldon lock --reinstall\n```\n\n### `source`\n\nThis command generates the shell script. This command will first check if there\nis an up to date lock file, if not, then it will first do the equivalent of the\nlock command above. This command is usually used with the built-in shell `eval`\ncommand.\n\n```sh\neval \"$(sheldon source)\"\n```\n\nBut you can also run it directly to inspect the output. The output of this\ncommand is highly configurable. You can define your own custom templates to\napply to your plugins.\n\n### `add`\n\nThis command adds a new plugin to the config file. It does nothing else but edit\nthe config file. In the following command we add a GitHub repository as a\nsource.\n\n```sh\nsheldon add my-repo --git https://github.com/owner/repo.git\n```\n\nAn example usage of this command for each source type is shown in the\n[Configuration](https://sheldon.cli.rs/Configuration.html) section.\n\n### `edit`\n\nThis command will open the config file in the default editor and only overwrite\nthe contents if the updated config file is valid. To override the editor that is\nused you should set the `EDITOR` environment variable.\n\nFor example using `vim`\n\n```sh\nEDITOR=vim sheldon edit\n```\n\nOr with Visual Studio Code\n\n```sh\nEDITOR=\"code --wait\" sheldon edit\n```\n\n### `remove`\n\nThis command removes a plugin from the config file. It does nothing else but\nedit the config file. In the following command we remove the plugin with name\n`my-repo`.\n\n```sh\nsheldon remove my-repo\n```\n\n### Options\n\nSheldon accepts the following global command line options and environment\nvariables. You can also view all options by running Sheldon with `-h` or\n`--help`. The value that will be used for the option follows the following\npriority.\n\n1. Command line option.\n1. Environment variable.\n1. Default value.\n\n##### `--color \u003cwhen\u003e`\n\nSet the output coloring.\n\n- `always`: Always use colored output.\n- `auto`: Automatically determine whether to use colored output (*default*).\n- `never`: Never use colored output.\n\n##### `--config-dir \u003cpath\u003e`\n\n*Environment variable:* `SHELDON_CONFIG_DIR`\n\nSet the config directory where the configuration file will be stored. This\ndefaults to `$XDG_CONFIG_HOME/sheldon` or `~/.config/sheldon`.\n\n##### `--data-dir \u003cpath\u003e`\n\n*Environment variable:* `SHELDON_DATA_DIR`\n\nSet the data directory where plugins will be downloaded to. This defaults to\n`$XDG_DATA_HOME/sheldon` or `~/.local/share/sheldon`.\n\n##### `--config-file \u003cpath\u003e`\n\n*Environment variable:* `SHELDON_CONFIG_FILE`\n\nSet the path to the config file. This defaults to `\u003cconfig-dir\u003e/plugins.toml`\nwhere `\u003cconfig-dir\u003e` is the config directory.\n\n##### `--profile \u003cprofile\u003e`\n\n*Environment variable:* `SHELDON_PROFILE`\n\nSpecify the profile to match plugins against. Plugins which have\n[profiles](https://sheldon.cli.rs/Configuration.html#profiles) configured will only get loaded if one of\nthe given profiles matches the profile.\n\n### Completions\n\nShell completion scripts for Bash and Zsh are available. If Sheldon was\ninstalled via Homebrew then the completions should have been installed\nautomatically.\n\nThey can also be generated by Sheldon using the `completions` subcommand which\nwill output the completions to stdout. Refer to your specific shell\ndocumentation for more details on how to install these.\n\n```\nsheldon completions --shell bash \u003e /path/to/completions/sheldon.bash\n```\n\nor\n\n```\nsheldon completions --shell zsh \u003e /path/to/completions/_sheldon\n```\n\n## ⚙️ Configuration\n\n### Plugin sources\n\nA plugin is defined by adding a new unique name to the `plugins` table in the\n[TOML](https://toml.io) config file. This can be done by either editing the file\ndirectly or using the provided Sheldon commands. A plugin must provide the\nlocation of the source. There are three types of sources, each kind is described\nin this section. A plugin may only specify *one* source type.\n\n```toml\n# ~/.config/sheldon/plugins.toml\n\n#           ┌─ Unique name for the plugin\n#        ┌──┴─┐\n[plugins.base16]\ngithub = \"chriskempson/base16-shell\"\n#         └─────┬────┘ └─────┬────┘\n#               │            └─ GitHub repository name\n#               └─ GitHub user or organization\n```\n\n#### Git\n\nGit sources specify a remote Git repository that will be cloned to the Sheldon\ndata directory. There are three flavors of Git sources.\n\n##### `github`\n\nA GitHub source must set the `github` field and specify the repository. This\nshould be the username or organization and the repository name separated by a\nforward slash. Add the following to the Sheldon config file.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\n```\n\nOr run `add` with the `--github` option.\n\n```sh\nsheldon add example --github owner/repo\n```\n\n##### `gist`\n\nA Gist source must set the `gist` field and specify the repository. This should\nbe the hash or username and hash of the Gist. Add the following to the Sheldon\nconfig file.\n\n```toml\n[plugins.example]\ngist = \"579d02802b1cc17baed07753d09f5009\"\n```\n\nOr run `add` with the `--gist` option.\n\n```sh\nsheldon add example --gist 579d02802b1cc17baed07753d09f5009\n```\n\n##### `git`\n\nA Git source must set the `git` field and specify the URL to clone. Add the\nfollowing to the Sheldon config file.\n\n```toml\n[plugins.example]\ngit = \"https://github.com/owner/repo\"\n```\n\nOr run `add` with the `--git` option.\n\n```sh\nsheldon add example --git https://github.com/owner/repo\n```\n\n##### Specifying a branch, tag, or commit\n\nAll Git sources also allow setting of one of the `branch`, `tag` or `rev`\nfields. Sheldon will then checkout the repository at this reference.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\ntag = \"v0.1.0\"\n```\n\nOr run `add` with the `--tag`, `--branch`, or `--rev` option.\n\n```sh\nsheldon add example --github owner/repo --tag v0.1.0\n```\n\n##### Cloning with Git or SSH protocols\n\nGitHub and Gist sources are cloned using HTTPS by default. You can specify that\nGit or SSH should be used by setting the `proto` field to the protocol type.\nThis must be one of `git`, `https`, or `ssh`.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\nproto = \"ssh\"\n```\n\nFor a plain Git source you should specify the URL with a `git://` or `ssh://`.\nFor SSH you will need to specify the username as well (it is `git` for GitHub).\n\n```toml\n[plugins.example]\ngit = \"ssh://git@github.com/owner/repo\"\n```\n\n##### Private Git repositories\n\nCurrently Sheldon only supports authentication when cloning using SSH and\nrequires an SSH agent to provide credentials. This means if you have a plugin\nsource that is a private repository you will have to use the SSH protocol for\ncloning.\n\n#### Remote\n\nRemote sources specify a remote file that will be downloaded by Sheldon. A\nremote source must set the `remote` field and specify the URL. Add the following\nto the Sheldon config file.\n\n```toml\n[plugins.example]\nremote = \"https://github.com/owner/repo/raw/branch/plugin.zsh\"\n```\n\nOr run `add` with the `--remote` option.\n\n```sh\nsheldon add example --remote https://github.com/owner/repo/raw/branch/plugin.zsh\n```\n\n#### Local\n\nLocal sources reference local directories. A local source must set the `local`\nfield and specify a directory. Tildes may be used and will be expanded to the\ncurrent user’s home directory. Add the following to the Sheldon config file.\n\n```toml\n[plugins.example]\nlocal = \"~/Downloads/plugin\"\n```\n\nOr run `add` with the `--local` option.\n\n```sh\nsheldon add example --local '~/Downloads/plugin'\n```\n\n### Plugin options\n\nThese are options that are common to all the above plugins.\n\n#### `use`\n\nA list of files / globs to use in the plugin’s source directory. If this field\nis not given then the first pattern in the global [`match`](#match) field that\nmatches any files will be used. Add the following to the Sheldon config file.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\nuse = [\"*.zsh\"]\n```\n\nOr run `add` with the `--use` option when adding the plugin.\n\n```sh\nsheldon add example --github owner/repo --use '*.zsh'\n```\n\n#### `apply`\n\nA list of template names to apply to this plugin. This defaults to the global\n[`apply`](#apply-1).\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\napply = [\"source\", \"PATH\"]\n```\n\nOr run `add` with the `--apply` option when adding the plugin.\n\n```sh\nsheldon add example --github owner/repo --apply source PATH\n```\n\nYou can define your own [custom templates](#custom-templates) to apply to your\nplugins.\n\n#### `profiles`\n\nA list of profiles this plugin should be used in. If this field is not given the\nplugin will be used regardless of the profile. Otherwise, the plugin is only\nused if the specified [profile](https://sheldon.cli.rs/Command-line-interface.html#--profile-profile) is\nincluded in the configured list of profiles.\n\n#### `hooks`\n\nStatements executed around plugin installation.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\n\n[plugins.example.hooks]\npre = \"export TEST=test\"\npost = \"unset TEST\"\n```\n\n### Inline plugins\n\nFor convenience it also possible to define Inline plugins. An Inline plugin must\nset the `inline` field and specify the raw source.\n\n```toml\n[plugins.example]\ninline = 'example() { echo \"Just an example of inline shell code\" }'\n```\n\n### Templates\n\nA template defines how the shell source for a particular plugin is generated.\nFor example the **PATH** template adds the plugin directory to the shell `PATH`\nvariable. A template will be applied to a plugin if you add the template name to\nthe [`apply`](#apply) field on a plugin.\n\nAvailable built-in templates are different depending on what shell you are\nusing. The following are available for both Bash and Zsh.\n\n- **source**: source each file in a plugin.\n- **PATH**: add the plugin directory to the `PATH` variable.\n\nIf you are using Zsh then the following are also available.\n\n- **path**: add the plugin directory to the `path` variable.\n- **fpath**: add the plugin directory to the `fpath` variable.\n\nAs template strings in the config file they could be represented like the\nfollowing.\n\n```toml\n[templates]\nsource = '''\n{{ hooks?.pre | nl }}{% for file in files %}source \"{{ file }}\"\n{% endfor %}{{ hooks?.post | nl }}'''\nPATH = 'export PATH=\"{{ dir }}:$PATH\"'\npath = 'path=( \"{{ dir }}\" $path )'\nfpath = 'fpath=( \"{{ dir }}\" $fpath )'\n```\n\nFor example if we change the `apply` field for the below plugin, it will only\nadd the plugin directory to the `PATH` and append it to the `fpath`. The plugin\nwill not be sourced.\n\n```toml\n[plugins.example]\ngithub = \"owner/repo\"\napply = [\"PATH\", \"fpath\"]\n```\n\n#### Custom templates\n\nIt is possible to create your own custom templates, and you can even override\nthe built-in ones.\n\nPlugins all have the following information that can be used in templates.\n\n- **A unique name.** This is completely arbitrary, and it is the value specified\n  for the plugin in the plugins table. However, it is often the name of the\n  plugin, so it can be useful to use this name in templates with `{{ name }}`.\n\n- **A directory.** For Git sources this is the location of the cloned\n  repository, for local sources, it is the directory specified. This directory\n  can be used in templates with `{{ dir }}`.\n\n- **One or more files.** These are the matched files in the plugin directory\n  either discovered using the the global `match` field or specified as a plugin\n  option with `use`. These can be used in templates by iterating over the files.\n  For example: `{% for file in  files %} ... {{ file }} ... {% endfor %}`.\n\n- **Hooks** Hooks are taken directly from the configuration and can be used as\n  `{{ hooks.[KEY] }}`.\n\nTo add or update a template add a new key to the `[templates]` table in the\nconfig file. Take a look at the [examples](https://sheldon.cli.rs/Examples.html) for some interesting\napplications of this.\n\n### Global options\n\n#### `shell`\n\nIndicates the shell that you are using. This setting will affect the default\nvalues for several global config settings. This includes the global\n[`match`](#match) setting and the available templates. This defaults to `zsh`.\n\n```toml\nshell = \"bash\"\n```\n\nor\n\n```toml\nshell = \"zsh\"\n```\n\n#### `match`\n\nA list of glob patterns to match against a plugin’s contents. The first pattern\nthat matches any files will be used by default as a plugin’s `use` field. This\ndefaults to\n\n```toml\nmatch = [\n    \"{{ name }}.plugin.zsh\",\n    \"{{ name }}.zsh\",\n    \"{{ name }}.sh\",\n    \"{{ name }}.zsh-theme\",\n    \"*.plugin.zsh\",\n    \"*.zsh\",\n    \"*.sh\",\n    \"*.zsh-theme\"\n]\n```\n\nIf the shell is Bash then this defaults to\n\n```toml\nmatch = [\n    \"{{ name }}.plugin.bash\",\n    \"{{ name }}.plugin.sh\",\n    \"{{ name }}.bash\",\n    \"{{ name }}.sh\",\n    \"*.plugin.bash\",\n    \"*.plugin.sh\",\n    \"*.bash\",\n    \"*.sh\"\n]\n```\n\n#### `apply`\n\nA list of template names to apply to all plugins by default (see\n[`apply`](#apply)). This defaults to\n\n```toml\napply = [\"source\"]\n```\n\n## 💡 Examples\n\nYou can find many examples including deferred loading of plugins in the\n[documentation](https://sheldon.cli.rs/Examples.html).\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n","funding_links":[],"categories":["Rust","bash"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frossmacarthur%2Fsheldon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frossmacarthur%2Fsheldon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frossmacarthur%2Fsheldon/lists"}