diff options
| author | Núbio C. Hott <bio@brigadadigital.tec.br> | 2026-04-27 21:43:40 -0300 |
|---|---|---|
| committer | Núbio C. Hott <bio@brigadadigital.tec.br> | 2026-04-27 21:43:40 -0300 |
| commit | a0190a6ce6cdba78bb67b23c0233de0f32bd39f3 (patch) | |
| tree | 4384af75256d19430be8178146beb5524ec1baa6 /tasks.py | |
| download | website-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.tar.gz website-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.tar.bz2 website-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.zip | |
Início do repositório
Diffstat (limited to 'tasks.py')
| -rw-r--r-- | tasks.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tasks.py b/tasks.py new file mode 100644 index 0000000..85f29ff --- /dev/null +++ b/tasks.py @@ -0,0 +1,80 @@ +# -*- 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', + # Remote server configuration + 'production': 'nbio@brigadadigital.org.br:2221', + 'dest_path': '/var/www', + # 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)) + |
