mirror of
https://github.com/LCPQ/QUESTDB_website.git
synced 2024-08-24 21:21:52 +02:00
Replace Pelican by hugo as website generator
This commit is contained in:
parent
77b0d8f067
commit
762966db99
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,9 +1,7 @@
|
|||||||
*~
|
|
||||||
.vscode
|
.vscode
|
||||||
._*
|
public
|
||||||
*.lock
|
*.lock
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
*.swp
|
*.swp
|
||||||
*.out
|
*.out
|
||||||
*.py[cod]
|
public
|
||||||
output
|
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "themes/beautifulhugo"]
|
||||||
|
path = themes/beautifulhugo
|
||||||
|
url = https://github.com/halogenica/beautifulhugo.git
|
77
Makefile
77
Makefile
@ -1,75 +1,8 @@
|
|||||||
PY?=python3
|
default:
|
||||||
PELICAN?=pelican
|
hugo
|
||||||
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
|
|
||||||
|
|
||||||
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:
|
serve:
|
||||||
ifdef PORT
|
hugo -D server
|
||||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
|
|
||||||
else
|
|
||||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
serve-global:
|
clean:
|
||||||
ifdef SERVER
|
rm -rf public
|
||||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b $(SERVER)
|
|
||||||
else
|
|
||||||
$(PELICAN) -l $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT) -b 0.0.0.0
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
devserver:
|
|
||||||
ifdef PORT
|
|
||||||
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS) -p $(PORT)
|
|
||||||
else
|
|
||||||
$(PELICAN) -lr $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
publish:
|
|
||||||
$(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(PUBLISHCONF) $(PELICANOPTS)
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: html help clean regenerate serve serve-global devserver publish
|
|
||||||
|
6
archetypes/default.md
Normal file
6
archetypes/default.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
|
date: {{ .Date }}
|
||||||
|
draft: true
|
||||||
|
---
|
||||||
|
|
6
config.toml
Normal file
6
config.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
baseURL = "localhost:8080"
|
||||||
|
languageCode = "en-us"
|
||||||
|
DateForm = "12-30-2006"
|
||||||
|
title = "exdatabaseLCPQ"
|
||||||
|
DefaultContentLanguage = "en"
|
||||||
|
theme = "beautifulhugo"
|
@ -1,14 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
---
|
||||||
<html>
|
title: "Welcome"
|
||||||
<head>
|
date: 2019-08-29 09:00
|
||||||
<title>Welcome</title>
|
draft: false
|
||||||
<meta name="save_as" content="index.html"></meta>
|
---
|
||||||
<meta name="date" content="2019-08-29 09:00"></meta>
|
<script src="/scripts/data.js" type="text/javascript"></script>
|
||||||
</head>
|
<script src="/scripts/getFullDataPath.js" type="text/javascript"></script>
|
||||||
<body>
|
<script src="/scripts/getTextFromFile.js" type="text/javascript"></script>
|
||||||
<script src="{static}/scripts/data.js" type="text/javascript"></script>
|
|
||||||
<script src="{static}/scripts/getFullDataPath.js" type="text/javascript"></script>
|
|
||||||
<script src="{static}/scripts/getTextFromFile.js" type="text/javascript"></script>
|
|
||||||
<script src="https://cdn.rawgit.com/larsgw/citation.js/archive/citation.js/citation-0.4.0-9.js" type="text/javascript"></script>
|
<script src="https://cdn.rawgit.com/larsgw/citation.js/archive/citation.js/citation-0.4.0-9.js" type="text/javascript"></script>
|
||||||
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
||||||
<script type="text/javascript" id="MathJax-script" async
|
<script type="text/javascript" id="MathJax-script" async
|
||||||
@ -85,6 +82,4 @@
|
|||||||
</label><br/>
|
</label><br/>
|
||||||
<h1>Data</h1>
|
<h1>Data</h1>
|
||||||
<p id=data_par></p>
|
<p id=data_par></p>
|
||||||
<a target="_blank" id='lnk_file'>Go to file</a>
|
<a target="_blank" id='lnk_file'>Go to file</a>
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,14 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
---
|
||||||
<html>
|
title: "view"
|
||||||
<head>
|
date: 2019-08-29 09:00
|
||||||
<title>view</title>
|
draft: false
|
||||||
<meta name="save_as" content="view.html"></meta>
|
---
|
||||||
<meta name="date" content="2019-08-29 09:00"></meta>
|
<script src="/scripts/getFullDataPath.js" type="text/javascript"></script>
|
||||||
</head>
|
<script src="/scripts/getTextFromFile.js" type="text/javascript"></script>
|
||||||
<body>
|
<script src="/scripts/parseQueryStringToDictionary.js" type="text/javascript"></script>
|
||||||
<script src="{static}/scripts/getFullDataPath.js" type="text/javascript"></script>
|
|
||||||
<script src="{static}/scripts/getTextFromFile.js" type="text/javascript"></script>
|
|
||||||
<script src="{static}/scripts/parseQueryStringToDictionary.js" type="text/javascript"></script>
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
window.onload=async function(){
|
window.onload=async function(){
|
||||||
@ -68,6 +65,4 @@
|
|||||||
<div id="div_btn" hidden=true>
|
<div id="div_btn" hidden=true>
|
||||||
<button id="btn_clip" onclick="Copy()">Copy content</button>
|
<button id="btn_clip" onclick="Copy()">Copy content</button>
|
||||||
<button id='btn_download'>Download</button>
|
<button id='btn_download'>Download</button>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,35 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*- #
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
AUTHOR = 'Mickaël Véril'
|
|
||||||
SITENAME = 'exdatabaseLCPQ'
|
|
||||||
SITEURL = ''
|
|
||||||
|
|
||||||
PATH = 'content'
|
|
||||||
STATIC_PATHS=['data']
|
|
||||||
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', 'http://getpelican.com/'),
|
|
||||||
('Python.org', 'http://python.org/'),
|
|
||||||
('Jinja2', 'http://jinja.pocoo.org/'),
|
|
||||||
('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
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# -*- coding: utf-8 -*- #
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
# 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 = ""
|
|
@ -1,3 +1,3 @@
|
|||||||
function getFullDataPath(path) {
|
function getFullDataPath(path) {
|
||||||
return 'data/' + path;
|
return '/data/' + path;
|
||||||
}
|
}
|
109
tasks.py
109
tasks.py
@ -1,109 +0,0 @@
|
|||||||
# -*- 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
|
|
||||||
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'],
|
|
||||||
# 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 {settings_base}'.format(**CONFIG))
|
|
||||||
|
|
||||||
@task
|
|
||||||
def rebuild(c):
|
|
||||||
"""`build` with the delete switch"""
|
|
||||||
c.run('pelican -d -s {settings_base}'.format(**CONFIG))
|
|
||||||
|
|
||||||
@task
|
|
||||||
def regenerate(c):
|
|
||||||
"""Automatically regenerate site upon file modification"""
|
|
||||||
c.run('pelican -r -s {settings_base}'.format(**CONFIG))
|
|
||||||
|
|
||||||
@task
|
|
||||||
def serve(c):
|
|
||||||
"""Serve site at http://localhost:$PORT/ (default port is 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 {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 port
|
|
||||||
server.serve(port=CONFIG['port'], root=CONFIG['deploy_path'])
|
|
||||||
|
|
||||||
|
|
||||||
@task
|
|
||||||
def publish(c):
|
|
||||||
"""Publish to production via rsync"""
|
|
||||||
c.run('pelican -s {settings_publish}'.format(**CONFIG))
|
|
||||||
c.run(
|
|
||||||
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
|
||||||
'{} {production}:{dest_path}'.format(
|
|
||||||
CONFIG['deploy_path'].rstrip('/') + '/',
|
|
||||||
**CONFIG))
|
|
||||||
|
|
1
themes/beautifulhugo
Submodule
1
themes/beautifulhugo
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit b71c2754dc32bb8690fabe795c300a7432243191
|
Loading…
Reference in New Issue
Block a user