Plugin ====== This section talks about installing, loading and writing third party plugins. Installing Plugins ------------------ Installing a third party plugin can be easily done with pip:: $ pip install fapistrano-PLUGIN Loading Plugins --------------- In your `deploy.yml`, append plugin name to configuration item `plugins`:: plugins: - fapistrano.git - fapistrano.virtualenv Normally, plugins have their own configurations. Don't forget configure these configurations before running `fap` command. You can set plugin configurations globally, or custmozie for each Stage-Role, or even on each cli running. Tracing Plugins(TODO) ---------------------- If you want to find out a complete function call sequence during deploying applicaiton, you can find out the answer by typing:: $ fap release -s production --dry-run Deactivating Plugins(TODO) -------------------------- TODO You can prevent plugins from loading them:: fap release -s staging --no-plugins fapistrano.git This means that any subsequent try to activate/load the named plugin will not work. Writing Plugins --------------- It's easy to implement plugins for your own vanilla project or pip installable plugins that can be used throughout many projects. A plugin contains an `init` function. Normally plugin register default configurations and signal handlers at `init` function. A plugin is recommended to use it's name as prefix in configuration definition. Here is a hello-world example:: # fapistrano_echo.py import click from fapistrano import signal, configuration, env def init(): configuration.setdefault('echo_message', 'Hello World') signal.register('deploy.finished', echo_message) def echo_message(**kwargs): click.secho(env.echo_message, fg='green') Default Plugins --------------- Fapistrano internally bootstrap several plugins: * `fapistrano.curl`: dowloading a file into release directory on updating release. * `fapistrano.git`: using git as a scm tool to update files on updateing release. * `fapistrano.localshared`: copy some files from one place at your server to shared directory before starting release. * `fapistrano.supervisorctl`: restart your application on release published. * `fapistrano.virtualenv`: using virtualenv to create python environment on updating release. * `fapistrano.virtualenvwrapper`: using virtualenvwrapper to create python environment on updating release.