summaryrefslogtreecommitdiff
path: root/tasks.py
diff options
context:
space:
mode:
authorNúbio C. Hott <bio@brigadadigital.tec.br>2026-04-27 21:43:40 -0300
committerNúbio C. Hott <bio@brigadadigital.tec.br>2026-04-27 21:43:40 -0300
commita0190a6ce6cdba78bb67b23c0233de0f32bd39f3 (patch)
tree4384af75256d19430be8178146beb5524ec1baa6 /tasks.py
downloadwebsite-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.tar.gz
website-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.tar.bz2
website-a0190a6ce6cdba78bb67b23c0233de0f32bd39f3.zip
Início do repositório
Diffstat (limited to 'tasks.py')
-rw-r--r--tasks.py80
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))
+