Fix #2888 Update template files formats

This commit is contained in:
Paolo Melchiorre 2021-06-11 16:47:39 +02:00
commit fb7112c245
3 changed files with 107 additions and 86 deletions

View file

@ -1,15 +1,15 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
"""Main settings file."""
AUTHOR = {{author}}
SITENAME = {{sitename}}
SITEURL = ''
AUTHOR = "{{author}}"
SITENAME = "{{sitename}}"
SITEURL = ""
PATH = 'content'
PATH = "content"
TIMEZONE = {{timezone}}
TIMEZONE = "{{timezone}}"
DEFAULT_LANG = {{lang}}
DEFAULT_LANG = "{{lang}}"
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
@ -19,16 +19,20 @@ 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', '#'),)
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', '#'),)
SOCIAL = (
("You can add links in your config file", "#"),
("Another social link", "#"),
)
DEFAULT_PAGINATION = {{default_pagination}}
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
# RELATIVE_URLS = True

View file

@ -1,24 +1,27 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
"""
Settings to use when ready to publish.
# This file is only used if you use `make publish` or
# explicitly specify it as your config file.
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 *
from pelicanconf import * # isort:skip # noqa
# If your site is available via HTTPS, make sure SITEURL begins with https://
SITEURL = '{{siteurl}}'
SITEURL = "{{siteurl}}"
RELATIVE_URLS = False
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = 'feeds/{slug}.atom.xml'
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 = ""
# DISQUS_SITENAME = ""
# GOOGLE_ANALYTICS = ""

View file

@ -1,105 +1,113 @@
# -*- coding: utf-8 -*-
"""Invoke tasks automation."""
import datetime
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 invoke.main import program{% if cloudfiles %}
from invoke.util import cd{% endif %}
from pelican import main as pelican_main
from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer
from pelican.settings import DEFAULT_CONFIG, get_settings_from_file
OPEN_BROWSER_ON_SERVE = True
SETTINGS_FILE_BASE = 'pelicanconf.py'
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',
"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'],
"deploy_path": SETTINGS["OUTPUT_PATH"],
{% if ssh %}
# Remote server configuration
'ssh_user': '{{ssh_user}}',
'ssh_host': '{{ssh_host}}',
'ssh_port': '{{ssh_port}}',
'ssh_path': '{{ssh_target_dir}}',
"ssh_user": "{{ssh_user}}",
"ssh_host": "{{ssh_host}}",
"ssh_port": "{{ssh_port}}",
"ssh_path": "{{ssh_target_dir}}",
{% endif %}
{% if cloudfiles %}
# Rackspace Cloud Files configuration settings
'cloudfiles_username': '{{cloudfiles_username}}',
'cloudfiles_api_key': '{{cloudfiles_api_key}}',
'cloudfiles_container': '{{cloudfiles_container}}',
"cloudfiles_username": "{{cloudfiles_username}}",
"cloudfiles_api_key": "{{cloudfiles_api_key}}",
"cloudfiles_container": "{{cloudfiles_container}}",
{% endif %}
{% if github %}
# Github Pages configuration
'github_pages_branch': '{{github_pages_branch}}',
'commit_message': "'Publish site on {}'".format(datetime.date.today().isoformat()),
"github_pages_branch": "{{github_pages_branch}}",
"commit_message": "'Publish site on {}'".format(datetime.date.today().isoformat()),
{% endif %}
# Host and port for `serve`
'host': 'localhost',
'port': 8000,
"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'])
"""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))
"""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))
"""`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))
"""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)"""
"""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)
CONFIG["deploy_path"],
(CONFIG["host"], CONFIG["port"]),
ComplexHTTPRequestHandler,
)
if OPEN_BROWSER_ON_SERVE:
# Open site in default browser
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
sys.stderr.write('Serving at {host}:{port} ...\n'.format(**CONFIG))
sys.stderr.write("Serving at {host}:{port} ...\n".format(**CONFIG))
server.serve_forever()
@task
def reserve(c):
"""`build`, then `serve`"""
"""`build`, then `serve`."""
build(c)
serve(c)
@task
def preview(c):
"""Build production version of site"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
"""Build production version of site."""
pelican_run("-s {settings_publish}".format(**CONFIG))
@task
def livereload(c):
@ -107,25 +115,25 @@ def livereload(c):
from livereload import Server
def cached_build():
cmd = '-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True'
cmd = "-s {settings_base} -e CACHE_CONTENT=True LOAD_CONTENT_CACHE=True"
pelican_run(cmd.format(**CONFIG))
cached_build()
server = Server()
theme_path = SETTINGS['THEME']
theme_path = SETTINGS["THEME"]
watched_globs = [
CONFIG['settings_base'],
'{}/templates/**/*.html'.format(theme_path),
CONFIG["settings_base"],
"{}/templates/**/*.html".format(theme_path),
]
content_file_extensions = ['.md', '.rst']
content_file_extensions = [".md", ".rst"]
for extension in content_file_extensions:
content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
content_glob = "{0}/**/*{1}".format(SETTINGS["PATH"], extension)
watched_globs.append(content_glob)
static_file_extensions = ['.css', '.js']
static_file_extensions = [".css", ".js"]
for extension in static_file_extensions:
static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension)
static_file_glob = "{0}/static/**/*{1}".format(theme_path, extension)
watched_globs.append(static_file_glob)
for glob in watched_globs:
@ -136,41 +144,47 @@ def livereload(c):
import webbrowser
webbrowser.open("http://{host}:{port}".format(**CONFIG))
server.serve(host=CONFIG['host'], port=CONFIG['port'], root=CONFIG['deploy_path'])
server.serve(host=CONFIG["host"], port=CONFIG["port"], root=CONFIG["deploy_path"])
{% if cloudfiles %}
@task
def cf_upload(c):
"""Publish to Rackspace Cloud Files"""
"""Publish to Rackspace Cloud Files."""
rebuild(c)
with cd(CONFIG['deploy_path']):
c.run('swift -v -A https://auth.api.rackspacecloud.com/v1.0 '
'-U {cloudfiles_username} '
'-K {cloudfiles_api_key} '
'upload -c {cloudfiles_container} .'.format(**CONFIG))
with cd(CONFIG["deploy_path"]):
c.run(
"swift -v -A https://auth.api.rackspacecloud.com/v1.0 "
"-U {cloudfiles_username} "
"-K {cloudfiles_api_key} "
"upload -c {cloudfiles_container} .".format(**CONFIG)
)
{% endif %}
@task
def publish(c):
"""Publish to production via rsync"""
pelican_run('-s {settings_publish}'.format(**CONFIG))
"""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))
"{} {ssh_user}@{ssh_host}:{ssh_path}".format(
CONFIG["deploy_path"].rstrip("/") + "/", **CONFIG
)
)
{% if github %}
@task
def gh_pages(c):
"""Publish to GitHub Pages"""
"""Publish to GitHub Pages."""
preview(c)
c.run('ghp-import -b {github_pages_branch} '
'-m {commit_message} '
'{deploy_path} -p'.format(**CONFIG))
c.run(
"ghp-import -b {github_pages_branch} "
"-m {commit_message} "
"{deploy_path} -p".format(**CONFIG)
)
{% endif %}
def pelican_run(cmd):
cmd += ' ' + program.core.remainder # allows to pass-through args to pelican
"""Allow to pass-through args to pelican."""
cmd += " " + program.core.remainder
pelican_main(shlex.split(cmd))