summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorAnish Athalye <me@anishathalye.com>2016-02-06 13:54:19 -0500
committerAnish Athalye <me@anishathalye.com>2016-02-06 15:23:39 -0500
commitc402396c58114640745dbba132856cfd8cd7f422 (patch)
tree73a1a76674cc573547a1b725b907931e4178e564 /README.md
parentaaf093b1240d7ea34dd6484ce01438f2329d1a8d (diff)
Add documentation and tests for plugins
Diffstat (limited to 'README.md')
-rw-r--r--README.md17
1 files changed, 16 insertions, 1 deletions
diff --git a/README.md b/README.md
index 83b16c5..00c654d 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ Configuration
Dotbot uses YAML or JSON formatted configuration files to let you specify how
to set up your dotfiles. Currently, Dotbot knows how to [link](#link) files and
folders, execute [shell](#shell) commands, and [clean](#clean) directories of
-broken symbolic links.
+broken symbolic links. Dotbot also supports user plugins for custom commands.
**Ideally, bootstrap configurations should be idempotent. That is, the
installer should be able to be run multiple times without causing any
@@ -224,6 +224,21 @@ Clean commands are specified as an array of directories to be cleaned.
- clean: ['~']
```
+### Plugins
+
+Dotbot also supports custom directives implemented by plugins. Plugins are
+implemented as subclasses of `dotbot.Plugin`, so they must implement
+`can_handle()` and `handle()`. The `can_handle()` method should return `True`
+if the plugin can handle an action with the given name. The `handle()` method
+should do something and return whether or not it completed successfully.
+
+All built-in Dotbot directives are written as plugins that are loaded by
+default, so those can be used as a reference when writing custom plugins.
+
+Plugins are loaded using the `--plugin` and `--plugin-dir` options, using
+either absolute paths or paths relative to the base directory. It is
+recommended that these options are added directly to the `install` script.
+
Contributing
------------