Browse Source

Add livereload, fix static path and update README

pull/1/head
Luke Murphy 6 years ago
parent
commit
6c72a8b8e3
No known key found for this signature in database GPG Key ID: 5E2EF5A63E3718CC
  1. 41
      README.md
  2. 4
      pelicanconf.py
  3. 36
      tasks.py

41
README.md

@ -1,20 +1,22 @@
# nooo-hbsc # nooo-hbsc
Revamped homebrewserver.club website. The new homebrewserver.club website.
> https://homebrewserver.club/
## Build the site locally ## Build the site locally
### Preparing your system ### System requirements
Install the prerequisites: Install the system requirements:
```bash ```bash
$ apt install -y python3 python-3 python3-venv $ apt install -y python3 python3-dev python3-venv
``` ```
### Installing the Python requirements ### Python requirements
Then create a virtual environment and activate it with: Then create a virtual environment and activate it:
```bash ```bash
$ python3 -m venv .venv $ python3 -m venv .venv
@ -24,13 +26,13 @@ $ source .venv/bin/activate
Then install the requirements: Then install the requirements:
```bash ```bash
$ pip install pelican markdown $ pip install -r requirements.txt
``` ```
Then generate the content and run the server:
### Generating the site ### Generating the site
Generate the content and run the server:
```bash ```bash
$ pelican content $ pelican content
$ pelican --listen $ pelican --listen
@ -40,13 +42,24 @@ Then the site is available at the following URL:
> http://localhost:8000 > http://localhost:8000
### Working on the site ## Working with the site
Run the following: * Website articles and content is in [content](./content)
* The website structure is in [themes/homebrewtheme](./themes/homebrewserver)
While working on the site, you can run the following:
```bash ```bash
$ pelican --autoreload --listen $ invoke livereload
``` ```
And then you can edit the files and the site will regenerate each time And then the Pelican development server will automatically reload
automatically. It is faster this way to review what you are working on. when you make changes.
## Deploying the site
Just run the usual:
```
$ git push origin master
```

4
pelicanconf.py

@ -22,6 +22,6 @@ DEFAULT_PAGINATION = False
THEME = 'themes/homebrewtheme' THEME = 'themes/homebrewtheme'
STATIC_PATHS = ['static'] STATIC_PATHS = ['staticfiles']
DISPLAY_CATEGORIES_ON_MENU = True DISPLAY_CATEGORIES_ON_MENU = True

36
tasks.py

@ -3,22 +3,19 @@
import os import os
import shutil import shutil
import sys import sys
import datetime
from invoke import task from invoke import task
from invoke.util import cd from livereload import Server
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
CONFIG = { CONFIG = {
# Local path configuration (can be absolute or relative to tasks.py) 'content_path': 'content',
'deploy_path': 'output', 'deploy_path': 'output',
# Remote server configuration
'production': 'lidia@varia.zone:12345',
'dest_path': '/var/www/homebrewserver.club', 'dest_path': '/var/www/homebrewserver.club',
# Port for `serve`
'port': 8000, 'port': 8000,
} }
@task @task
def clean(c): def clean(c):
"""Remove generated files""" """Remove generated files"""
@ -26,21 +23,25 @@ def clean(c):
shutil.rmtree(CONFIG['deploy_path']) shutil.rmtree(CONFIG['deploy_path'])
os.makedirs(CONFIG['deploy_path']) os.makedirs(CONFIG['deploy_path'])
@task @task
def build(c): def build(c):
"""Build local version of site""" """Build local version of site"""
c.run('pelican -s pelicanconf.py') c.run('pelican -s pelicanconf.py')
@task @task
def rebuild(c): def rebuild(c):
"""`build` with the delete switch""" """`build` with the delete switch"""
c.run('pelican -d -s pelicanconf.py') c.run('pelican -d -s pelicanconf.py')
@task @task
def regenerate(c): def regenerate(c):
"""Automatically regenerate site upon file modification""" """Automatically regenerate site upon file modification"""
c.run('pelican -r -s pelicanconf.py') c.run('pelican -r -s pelicanconf.py')
@task @task
def serve(c): def serve(c):
"""Serve site at http://localhost:8000/""" """Serve site at http://localhost:8000/"""
@ -49,19 +50,20 @@ def serve(c):
allow_reuse_address = True allow_reuse_address = True
server = AddressReuseTCPServer( server = AddressReuseTCPServer(
CONFIG['deploy_path'], CONFIG['deploy_path'], ('', CONFIG['port']), ComplexHTTPRequestHandler
('', CONFIG['port']), )
ComplexHTTPRequestHandler)
sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG)) sys.stderr.write('Serving on port {port} ...\n'.format(**CONFIG))
server.serve_forever() server.serve_forever()
@task @task
def reserve(c): def reserve(c):
"""`build`, then `serve`""" """`build`, then `serve`"""
build(c) build(c)
serve(c) serve(c)
@task @task
def preview(c): def preview(c):
"""Build production version of site""" """Build production version of site"""
@ -70,11 +72,13 @@ def preview(c):
@task @task
def publish(c): def publish(c):
"""Publish to production via rsync""" """Publish to production via Git hook"""
c.run('pelican -s publishconf.py') c.run('git push origin master')
c.run(
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
'{} {production}:{dest_path}'.format(
CONFIG['deploy_path'].rstrip('/') + '/',
**CONFIG))
@task
def livereload(c):
"""Get automatic live reloading when hacking on the site"""
server = Server()
server.watch(CONFIG['content_path'], lambda: build(c))
server.serve(root=CONFIG['deploy_path'], port=CONFIG['port'])

Loading…
Cancel
Save