Browse Source

Add livereload, fix static path and update README

pull/1/head
Luke Murphy 5 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
Revamped homebrewserver.club website.
The new homebrewserver.club website.
> https://homebrewserver.club/
## Build the site locally
### Preparing your system
### System requirements
Install the prerequisites:
Install the system requirements:
```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
$ python3 -m venv .venv
@ -24,13 +26,13 @@ $ source .venv/bin/activate
Then install the requirements:
```bash
$ pip install pelican markdown
$ pip install -r requirements.txt
```
Then generate the content and run the server:
### Generating the site
Generate the content and run the server:
```bash
$ pelican content
$ pelican --listen
@ -40,13 +42,24 @@ Then the site is available at the following URL:
> 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
$ pelican --autoreload --listen
$ invoke livereload
```
And then you can edit the files and the site will regenerate each time
automatically. It is faster this way to review what you are working on.
And then the Pelican development server will automatically reload
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'
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 shutil
import sys
import datetime
from invoke import task
from invoke.util import cd
from livereload import Server
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
CONFIG = {
# Local path configuration (can be absolute or relative to tasks.py)
'content_path': 'content',
'deploy_path': 'output',
# Remote server configuration
'production': 'lidia@varia.zone:12345',
'dest_path': '/var/www/homebrewserver.club',
# Port for `serve`
'port': 8000,
}
@task
def clean(c):
"""Remove generated files"""
@ -26,21 +23,25 @@ def clean(c):
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/"""
@ -49,19 +50,20 @@ def serve(c):
allow_reuse_address = True
server = AddressReuseTCPServer(
CONFIG['deploy_path'],
('', CONFIG['port']),
ComplexHTTPRequestHandler)
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"""
@ -70,11 +72,13 @@ def preview(c):
@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))
"""Publish to production via Git hook"""
c.run('git push origin master')
@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