1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # -*- coding: utf-8 -*-
- import os
- import shutil
- import sys
- import datetime
- from invoke import task
- from invoke.util import cd
- from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
- CONFIG = {
- # Local path configuration (can be absolute or relative to tasks.py)
- 'deploy_path': 'output',
- # Port for `serve`
- 'port': 8000,
- }
- @task
- def clean(c):
- """Remove generated files"""
- if os.path.isdir(CONFIG['deploy_path']):
- shutil.rmtree(CONFIG['deploy_path'])
- os.makedirs(CONFIG['deploy_path'])
- @task
- def build(c):
- """Build local version of site"""
- c.run('pelican -s pelicanconf.py')
- @task
- def rebuild(c):
- """`build` with the delete switch"""
- c.run('pelican -d -s pelicanconf.py')
- @task
- def regenerate(c):
- """Automatically regenerate site upon file modification"""
- c.run('pelican -r -s pelicanconf.py')
- @task
- def serve(c):
- """Serve site at http://localhost:8000/"""
- class AddressReuseTCPServer(RootedHTTPServer):
- allow_reuse_address = True
- server = AddressReuseTCPServer(
- CONFIG['deploy_path'],
- ('', CONFIG['port']),
- ComplexHTTPRequestHandler)
- sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
- server.serve_forever()
- @task
- def reserve(c):
- """`build`, then `serve`"""
- build(c)
- serve(c)
- @task
- def preview(c):
- """Build production version of site"""
- c.run('pelican -s publishconf.py')
- @task
- def publish(c):
- """Publish to production via rsync"""
- c.run('pelican -s publishconf.py')
- c.run(
- 'rsync --delete --exclude ".DS_Store" -pthrvz -c '
- '{} {production}:{dest_path}'.format(
- CONFIG['deploy_path'].rstrip('/') + '/',
- **CONFIG))
|