Browse Source

installed a pelican instance in this folder! wooh!

master
manetta 6 months ago
parent
commit
c2d15c7150
8 changed files with 305 additions and 0 deletions
  1. +73
    -0
      Makefile
  2. +15
    -0
      content/Part 1 - Digital Infrapuncture/1-what-is-digital-infrapuncture?.md
  3. +15
    -0
      content/Part 1 - Digital Infrapuncture/2-systematic-causes-of-pain.md
  4. +15
    -0
      content/Part 2 - What are Bots?/1-what-types-of-bots-are-there.md
  5. +7
    -0
      content/pages/about.md
  6. +38
    -0
      pelicanconf.py
  7. +24
    -0
      publishconf.py
  8. +118
    -0
      tasks.py

+ 73
- 0
Makefile View File

@ -0,0 +1,73 @@
PY?=python3
PELICAN?=pelican
PELICANOPTS=
BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/output
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py
DEBUG ?= 0
ifeq ($(DEBUG), 1)
PELICANOPTS += -D
endif
RELATIVE ?= 0
ifeq ($(RELATIVE), 1)
PELICANOPTS += --relative-urls
endif
SERVER ?= "0.0.0.0"
PORT ?= 0
ifneq ($(PORT), 0)
PELICANOPTS += -p $(PORT)
endif
help:
@echo 'Makefile for a pelican Web site '
@echo ' '
@echo 'Usage: '
@echo ' make html (re)generate the web site '
@echo ' make clean remove the generated files '
@echo ' make regenerate regenerate files upon modification '
@echo ' make publish generate using production settings '
@echo ' make serve [PORT=8000] serve site at http://localhost:8000'
@echo ' make serve-global [SERVER=0.0.0.0] serve (as root) to $(SERVER):80 '
@echo ' make devserver [PORT=8000] serve and regenerate together '
@echo ' make ssh_upload upload the web site via SSH '
@echo ' make rsync_upload upload the web site via rsync+ssh '
@echo ' '
@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html '
@echo 'Set the RELATIVE variable to 1 to enable relative urls '
@echo ' '
html:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
clean:
[ ! -d "$(OUTPUTDIR)" ] || rm -rf "$(OUTPUTDIR)"
regenerate:
"$(PELICAN)" -r "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
serve-global:
"$(PELICAN)" -l "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) -b $(SERVER)
devserver:
"$(PELICAN)" -lr "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS)
devserver-global:
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -b 0.0.0.0
publish:
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(PUBLISHCONF)" $(PELICANOPTS)
.PHONY: html help clean regenerate serve serve-global devserver publish

+ 15
- 0
content/Part 1 - Digital Infrapuncture/1-what-is-digital-infrapuncture?.md View File

@ -0,0 +1,15 @@
Title: What is digital infrapuncture?
Slug: digital-infrapuncture-1
Date: 2020-08-25 12:00
What is digital infrastructure? And why do should they be rethought in terms of capacity and care?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in libero viverra risus pulvinar congue. Sed pellentesque condimentum cursus. Quisque vestibulum ex quis tincidunt faucibus. Etiam porta nec eros quis ornare. Curabitur posuere lorem a lectus tincidunt fermentum. Nunc efficitur neque in mattis ullamcorper. Nullam aliquam nunc et elit tempor hendrerit. Proin eu erat sit amet nisl ultrices feugiat. Suspendisse dignissim ipsum sed ex porttitor molestie. Aenean elementum vitae justo eget scelerisque. Phasellus in quam vulputate, tempus libero eu, ornare tellus. Etiam sollicitudin venenatis hendrerit. Ut dolor dolor, commodo sit amet arcu eget, porttitor aliquam justo. Fusce maximus laoreet turpis sit amet molestie. Nulla facilisi.
Curabitur ut sapien et velit rutrum laoreet. Cras ac aliquet massa. Pellentesque elementum ornare orci. Donec mattis auctor lacus, quis dignissim arcu sollicitudin sit amet. Etiam imperdiet, risus sed condimentum interdum, ante est mattis sem, a tempor mi odio eget tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Proin sed justo ac nisi aliquam efficitur nec venenatis turpis.
Nulla pretium, purus vitae pretium porttitor, elit purus sagittis leo, ut blandit arcu nisl a metus. Nunc sit amet arcu ac magna finibus suscipit. Sed malesuada sem arcu, id egestas risus pharetra at. Sed sed pulvinar massa, at ornare odio. Donec quis magna sed turpis rhoncus dignissim. Aenean scelerisque sapien nec interdum suscipit. Donec sit amet tincidunt odio, in fermentum eros. Morbi varius augue nulla. Aliquam erat volutpat. Sed sit amet ligula hendrerit nisl posuere venenatis placerat quis sem. Phasellus in iaculis urna. Etiam mollis arcu eget dui volutpat molestie. Pellentesque sodales leo nec mi interdum interdum. Proin at gravida ante. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Donec non massa sapien. Aenean ligula lectus, iaculis ut tempus quis, scelerisque sit amet dui. Donec varius dui sed elit consectetur rhoncus non in leo. Quisque feugiat lobortis magna, eu auctor nisi sodales et. Fusce nec iaculis arcu. Morbi placerat pellentesque felis sed eleifend. Vivamus consectetur felis fringilla urna porta aliquam.
Nam rhoncus lacus libero, ut tincidunt lorem ultricies vel. Proin nibh neque, tempor quis nulla ac, vulputate dapibus metus. Proin rhoncus a diam quis hendrerit. Ut laoreet est id erat gravida, vitae aliquet lorem suscipit. Mauris eu tempor metus, sit amet blandit erat. Aenean viverra imperdiet orci, at condimentum nunc euismod ac. Suspendisse lectus augue, venenatis ullamcorper sollicitudin vel, venenatis vitae dui. In in velit feugiat, molestie nibh vitae, finibus elit. Nulla mattis metus eu finibus laoreet. Nullam lobortis dui ac feugiat dictum.

+ 15
- 0
content/Part 1 - Digital Infrapuncture/2-systematic-causes-of-pain.md View File

@ -0,0 +1,15 @@
Title: Systematic causes of pain?
Slug: digital-infrapuncture-2
Date: 2020-08-25 12:00
How do we amend systematic causes of pain?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in libero viverra risus pulvinar congue. Sed pellentesque condimentum cursus. Quisque vestibulum ex quis tincidunt faucibus. Etiam porta nec eros quis ornare. Curabitur posuere lorem a lectus tincidunt fermentum. Nunc efficitur neque in mattis ullamcorper. Nullam aliquam nunc et elit tempor hendrerit. Proin eu erat sit amet nisl ultrices feugiat. Suspendisse dignissim ipsum sed ex porttitor molestie. Aenean elementum vitae justo eget scelerisque. Phasellus in quam vulputate, tempus libero eu, ornare tellus. Etiam sollicitudin venenatis hendrerit. Ut dolor dolor, commodo sit amet arcu eget, porttitor aliquam justo. Fusce maximus laoreet turpis sit amet molestie. Nulla facilisi.
Curabitur ut sapien et velit rutrum laoreet. Cras ac aliquet massa. Pellentesque elementum ornare orci. Donec mattis auctor lacus, quis dignissim arcu sollicitudin sit amet. Etiam imperdiet, risus sed condimentum interdum, ante est mattis sem, a tempor mi odio eget tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Proin sed justo ac nisi aliquam efficitur nec venenatis turpis.
Nulla pretium, purus vitae pretium porttitor, elit purus sagittis leo, ut blandit arcu nisl a metus. Nunc sit amet arcu ac magna finibus suscipit. Sed malesuada sem arcu, id egestas risus pharetra at. Sed sed pulvinar massa, at ornare odio. Donec quis magna sed turpis rhoncus dignissim. Aenean scelerisque sapien nec interdum suscipit. Donec sit amet tincidunt odio, in fermentum eros. Morbi varius augue nulla. Aliquam erat volutpat. Sed sit amet ligula hendrerit nisl posuere venenatis placerat quis sem. Phasellus in iaculis urna. Etiam mollis arcu eget dui volutpat molestie. Pellentesque sodales leo nec mi interdum interdum. Proin at gravida ante. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Donec non massa sapien. Aenean ligula lectus, iaculis ut tempus quis, scelerisque sit amet dui. Donec varius dui sed elit consectetur rhoncus non in leo. Quisque feugiat lobortis magna, eu auctor nisi sodales et. Fusce nec iaculis arcu. Morbi placerat pellentesque felis sed eleifend. Vivamus consectetur felis fringilla urna porta aliquam.
Nam rhoncus lacus libero, ut tincidunt lorem ultricies vel. Proin nibh neque, tempor quis nulla ac, vulputate dapibus metus. Proin rhoncus a diam quis hendrerit. Ut laoreet est id erat gravida, vitae aliquet lorem suscipit. Mauris eu tempor metus, sit amet blandit erat. Aenean viverra imperdiet orci, at condimentum nunc euismod ac. Suspendisse lectus augue, venenatis ullamcorper sollicitudin vel, venenatis vitae dui. In in velit feugiat, molestie nibh vitae, finibus elit. Nulla mattis metus eu finibus laoreet. Nullam lobortis dui ac feugiat dictum.

+ 15
- 0
content/Part 2 - What are Bots?/1-what-types-of-bots-are-there.md View File

@ -0,0 +1,15 @@
Title: What types of bots are there?
Slug: what-types-of-bots-are-there
Date: 2020-08-25 12:00
What types of bots are there?
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in libero viverra risus pulvinar congue. Sed pellentesque condimentum cursus. Quisque vestibulum ex quis tincidunt faucibus. Etiam porta nec eros quis ornare. Curabitur posuere lorem a lectus tincidunt fermentum. Nunc efficitur neque in mattis ullamcorper. Nullam aliquam nunc et elit tempor hendrerit. Proin eu erat sit amet nisl ultrices feugiat. Suspendisse dignissim ipsum sed ex porttitor molestie. Aenean elementum vitae justo eget scelerisque. Phasellus in quam vulputate, tempus libero eu, ornare tellus. Etiam sollicitudin venenatis hendrerit. Ut dolor dolor, commodo sit amet arcu eget, porttitor aliquam justo. Fusce maximus laoreet turpis sit amet molestie. Nulla facilisi.
Curabitur ut sapien et velit rutrum laoreet. Cras ac aliquet massa. Pellentesque elementum ornare orci. Donec mattis auctor lacus, quis dignissim arcu sollicitudin sit amet. Etiam imperdiet, risus sed condimentum interdum, ante est mattis sem, a tempor mi odio eget tortor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Proin sed justo ac nisi aliquam efficitur nec venenatis turpis.
Nulla pretium, purus vitae pretium porttitor, elit purus sagittis leo, ut blandit arcu nisl a metus. Nunc sit amet arcu ac magna finibus suscipit. Sed malesuada sem arcu, id egestas risus pharetra at. Sed sed pulvinar massa, at ornare odio. Donec quis magna sed turpis rhoncus dignissim. Aenean scelerisque sapien nec interdum suscipit. Donec sit amet tincidunt odio, in fermentum eros. Morbi varius augue nulla. Aliquam erat volutpat. Sed sit amet ligula hendrerit nisl posuere venenatis placerat quis sem. Phasellus in iaculis urna. Etiam mollis arcu eget dui volutpat molestie. Pellentesque sodales leo nec mi interdum interdum. Proin at gravida ante. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Donec non massa sapien. Aenean ligula lectus, iaculis ut tempus quis, scelerisque sit amet dui. Donec varius dui sed elit consectetur rhoncus non in leo. Quisque feugiat lobortis magna, eu auctor nisi sodales et. Fusce nec iaculis arcu. Morbi placerat pellentesque felis sed eleifend. Vivamus consectetur felis fringilla urna porta aliquam.
Nam rhoncus lacus libero, ut tincidunt lorem ultricies vel. Proin nibh neque, tempor quis nulla ac, vulputate dapibus metus. Proin rhoncus a diam quis hendrerit. Ut laoreet est id erat gravida, vitae aliquet lorem suscipit. Mauris eu tempor metus, sit amet blandit erat. Aenean viverra imperdiet orci, at condimentum nunc euismod ac. Suspendisse lectus augue, venenatis ullamcorper sollicitudin vel, venenatis vitae dui. In in velit feugiat, molestie nibh vitae, finibus elit. Nulla mattis metus eu finibus laoreet. Nullam lobortis dui ac feugiat dictum.

+ 7
- 0
content/pages/about.md View File

@ -0,0 +1,7 @@
Title: About this Module
Date: 2020-08-25 12:00
Slug: about-this-module
This is the online module Bots as Digital Infrapuncture, commissioned by the University of Utrecht

+ 38
- 0
pelicanconf.py View File

@ -0,0 +1,38 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
AUTHOR = 'Cristina Cochior & Manetta Berends'
SITENAME = 'Bots as Digital Infrapuncture'
SITEURL = ''
PATH = 'content'
USE_FOLDER_AS_CATEGORY = True
TIMEZONE = 'Europe/Paris'
DEFAULT_LANG = 'en'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
# Blogroll
# LINKS = (('Pelican', 'https://getpelican.com/'),
# ('Python.org', 'https://www.python.org/'),
# ('Jinja2', 'https://palletsprojects.com/p/jinja/'),
# ('You can modify those links in your config file', '#'),)
# Social widget
# SOCIAL = (('You can add links in your config file', '#'),
# ('Another social link', '#'),)
DEFAULT_PAGINATION = False
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
STATIC_PATHS = ['extra/favicon.ico', 'images', 'pdfs', 'stream']

+ 24
- 0
publishconf.py View File

@ -0,0 +1,24 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
import os
import sys
sys.path.append(os.curdir)
from pelicanconf import *
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = ''
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
DELETE_OUTPUT_DIRECTORY = True
# Following items are often useful when publishing
#DISQUS_SITENAME = ""
#GOOGLE_ANALYTICS = ""

+ 118
- 0
tasks.py View File

@ -0,0 +1,118 @@
# -*- coding: utf-8 -*-
import os
import shlex
import shutil
import sys
import datetime
from invoke import task
from invoke.main import program
from invoke.util import cd
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
SETTINGS_FILE_BASE = 'pelicanconf.py'
SETTINGS = {}
SETTINGS.update(DEFAULT_CONFIG)
LOCAL_SETTINGS = get_settings_from_file(SETTINGS_FILE_BASE)
SETTINGS.update(LOCAL_SETTINGS)
CONFIG = {
'settings_base': SETTINGS_FILE_BASE,
'settings_publish': 'publishconf.py',
# Output path. Can be absolute or relative to tasks.py. Default: 'output'
'deploy_path': SETTINGS['OUTPUT_PATH'],
# Host and port for `serve`
'host': 'localhost',
'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"""
pelican_run('-s {settings_base}'.format(**CONFIG))
@task
def rebuild(c):
"""`build` with the delete switch"""
pelican_run('-d -s {settings_base}'.format(**CONFIG))
@task
def regenerate(c):
"""Automatically regenerate site upon file modification"""
pelican_run('-r -s {settings_base}'.format(**CONFIG))
@task
def serve(c):
"""Serve site at http://$HOST:$PORT/ (default is localhost:8000)"""
class AddressReuseTCPServer(RootedHTTPServer):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
(CONFIG['host'], CONFIG['port']),
ComplexHTTPRequestHandler)
sys.stderr.write('Serving at {host}:{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"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
@task
def livereload(c):
"""Automatically reload browser tab upon file modification."""
from livereload import Server
build(c)
server = Server()
# Watch the base settings file
server.watch(CONFIG['settings_base'], lambda: build(c))
# Watch content source files
content_file_extensions = ['.md', '.rst']
for extension in content_file_extensions:
content_blob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
server.watch(content_blob, lambda: build(c))
# Watch the theme's templates and static assets
theme_path = SETTINGS['THEME']
server.watch('{}/templates/*.html'.format(theme_path), lambda: build(c))
static_file_extensions = ['.css', '.js']
for extension in static_file_extensions:
static_file = '{0}/static/**/*{1}'.format(theme_path, extension)
server.watch(static_file, lambda: build(c))
# Serve output path on configured host and port
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
@task
def publish(c):
"""Publish to production via rsync"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'-e "ssh -p {ssh_port}" '
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
pelican_main(shlex.split(cmd))

Loading…
Cancel
Save