As of version 0.20, all of the parts of the commit message flashbake generates come from plugins.
As of version 0.22, the names of the stock plugins changed. This reflects the shift to implementing them as classes rather than modules.
There are many stock plugins:
These are enabled by adding the a “plugins:” line or lines to your .flashbake file.
Your plugins: entries might look like this:
flashbake will combine multiple “plugins:” lines to create the total list of plugins to use.
Plugins must be implemented in Python. If you create a ~/.flashbake/plugins/ directory, flashbake will add that to its Python path so any modules and classes there can be loaded. There is also a -p PLUGIN_DIR, —plugins=PLUGIN_DIR option if you want to specify some additional location. You do not need either the plugins directory in your home directory or the plugins option for the stock plugins to work, those are made available to Python and flashbake by following the proper installation. Also, if you are familiar with Python, you can make your modules available on its lookup path through any number of other means.
Plugins should extend the class flashbake.plugins.AbstractMessagePlugin. If a plugin uses the network, it should implementing an init that takes a plugin_spec string and call the super init passing in that string along with a True argument to indicate the plugin is connectable. See Feed and Weather for examples.
A plugin may implement an init method that takes a ControlConfig argument. In the init(self, config) method, the plugin may call the parent’s requireproperty and optionalproperty methods. These methods take a name argument, the name of an option in the control file that should be set as a property on the plugin itself. optionalproperty also takes an optional argument, a type, to which the option value string will be coerced. See Feed for examples of both of these methods being used.
There is also a shareproperty method from the flashbake.ControlConfig class that sets the option as a property on the config instance and on the plugin. See Weather for an example.
This plugin just adds the configured time zone on your computer to the commit message. It tries a few things to determine the timezone.
As of 0.22, the search for a TZ setting has been changed.
If all of these fail, then it will write a line to that effect in the commit message.
As of 0.22, this plugin will first use a “weather_city:” option if in the user’s config or the project’s config.
If there is no “weather_city:” this plugin uses the same logic as the timezone plugin to get a timezone value. It then parses that as the most common timezone names follow the form of “Continent/City_name”. It will parse out the city and fix it to drop out the underscore, if there is one. It then calls an undocumented Google API to get weather data as an XML file which it parses to construct a nice, readable line for the commit message.
This plugin read the file, “/proc/uptime”, and parses its contents to generate a human readable amount of time that your computer has been up and running. This plugin will only work on Linux.
This plugin requires some addition lines in your .flashbake configuration file.
As of 0.22 these have been renamed.
As of 0.22, if you use the feed plugin, feed_url must be specified.
The Twitter plugin pulls items from a single user’s public Twitter feed. It requires some addition lines in your .flashbake configuration file:
The Identica plugin pulls items from a single user’s public Identi.ca feed. It requires some addition lines in your .flashbake configuration file:
This plugin fetches the most recent tracks played by the Banshee music player and writes out the track’s title, artist and last time played. It supports some optional properties in your .flashbake configuration file:
This plugin doesn’t require any additional options but it does require a network connection. Accuracy of the plugin is limited by the free database it uses to convert your network address into a location.
Before activating the plugin you’ll want to open Scrivener. Under
Preferences → General ensure “Enable Subversion/CVS-compatible saving
(slower)” is checked.
If you are just activating this setting, you may wish to force a save of
your Scrivener project (Cmd-S).
Add the following to your “plugins:” entry in your .flashbake (or
The order is important.
(NOTE: the ScrivenerWordcount* plugins require ‘textutil’ to be
available which should be standard on Mac OS X 10.4+.)
Add either “*.scriv” or “MyDocument.scriv” (where “MyDocument” is the
name of your scrivener document) to your .flashbake file.
You may wish to test that the plugin is working by running:
$ flashbake —dryrun —context /path/to/project
You should see something similar to this in the output:
– Content 60165
– Synopsis 285
– Notes 2327
– All 62775
There is no configuration for this plugin. If iTunes is open and playing a track, the plugin will add a line with that info to the commit message. Otherwise, it will indicate that iTunes is not open.
Configuration of this plugin is optional. If totally omitted, then the user must be logged in and have Growl running. You must install the growlnotify program to use this plugin, the program is included in the Extras folder in the Growl .dmg file. The optional config properties are: