deploy_hooks
Lets you perform post deploy actions.
To install, run nikola plugin -i deploy_hooks
This is a signal handling plugin that lets you run custom commands or functions on new entries created since the last deployment.
Your command can be a template that can be rendered by the templating engine that your theme uses or a simple Python callable. The new entry/post is passed in the context to the templating engine, along with the command. If the command is a callable, the entry is passed as an argument.
Suggested Configuration:
# List of commands that need to be run for each new entry created since the # last deployment of the site. The commands can either be a "shell" command or # a python callable. # For example, you could post a new tweet each time you make a new post, using # either a shell command or a python function! # from __future__ import print_function def tweet(entry): from twitter import Twitter, OAuth, read_token_file from twitter.cmdline import CONSUMER_KEY, CONSUMER_SECRET, OPTIONS oauth_filename = OPTIONS['oauth_filename'] oauth_token, oauth_token_secret = read_token_file(oauth_filename) t = Twitter( auth=OAuth( oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET ) ) tags = ' '.join(['#' + tag for tag in entry.tags]) url = entry.permalink(absolute=True) status = 'New Post: %s %s %s' % (entry.title(), url, tags) t.statuses.update(status=status) DEPLOYED_HOOKS = [ "twitter set \"New Post: ${entry.title()} ${entry.permalink(absolute=True)} ${' '.join(['#'+tag for tag in entry.tags])}\"", tweet, ] # Similar to the DEPLOYED_HOOKS variable, but the commands are run for each # new entry that has not been deployed either because it is a draft or a future # post. # For example, this can be used to setup a cron/at job to deploy the site, # after the time at which the post is scheduled. UNDEPLOYED_HOOKS = [] # Set this to false, if you want the hooks to run on deployment after a clean. # If you set this to false, the hooks will essentially run on all the posts in # the site. NO_HOOKS_ON_CLEAN = True
Issues? Questions?
You can report issues with this plugin and request help via GitHub Issues.