premier commit
This commit is contained in:
commit
d3a81473f7
|
@ -0,0 +1,89 @@
|
||||||
|
PY?=python3
|
||||||
|
PELICAN?=pelican
|
||||||
|
PELICANOPTS=
|
||||||
|
|
||||||
|
BASEDIR=$(CURDIR)
|
||||||
|
INPUTDIR=$(BASEDIR)/content
|
||||||
|
OUTPUTDIR=$(BASEDIR)/output
|
||||||
|
CONFFILE=$(BASEDIR)/pelicanconf.py
|
||||||
|
PUBLISHCONF=$(BASEDIR)/publishconf.py
|
||||||
|
|
||||||
|
SSH_HOST=gnuragist.es
|
||||||
|
SSH_PORT=22
|
||||||
|
SSH_USER=admin
|
||||||
|
SSH_TARGET_DIR=/var/www/my_webapp/www
|
||||||
|
|
||||||
|
|
||||||
|
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 localhtml (re)generate the web site for local'
|
||||||
|
@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 devserver-global regenerate and serve on 0.0.0.0 '
|
||||||
|
@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 ' '
|
||||||
|
|
||||||
|
localhtml:
|
||||||
|
"$(PELICAN)" "$(INPUTDIR)" -o "$(OUTPUTDIR)" -s "$(CONFFILE)" $(PELICANOPTS) --relative-urls
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
ssh_upload: publish
|
||||||
|
scp -P $(SSH_PORT) -r "$(OUTPUTDIR)"/* "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
|
||||||
|
|
||||||
|
rsync_upload: publish
|
||||||
|
rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --include tags --cvs-exclude --delete "$(OUTPUTDIR)"/ "$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR)"
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: html help clean regenerate serve serve-global devserver publish ssh_upload rsync_upload
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Gnuragistes
|
||||||
|
|
||||||
|
## Ressources
|
||||||
|
|
||||||
|
* [ForkAwsome cheatsheet](https://forkaweso.me/Fork-Awesome/cheatsheet/)
|
||||||
|
* [Cool and responsive buttons](https://fdossena.com/?p=html5cool/buttons/i.frag)
|
||||||
|
* [Jinja](https://jinja.palletsprojects.com/en/3.0.x/templates/)
|
||||||
|
* [Pelican - templates and variables](https://docs.getpelican.com/en/latest/themes.html#templates-and-variables)
|
||||||
|
|
||||||
|
## Contenu
|
||||||
|
|
||||||
|
Sur le site …
|
||||||
|
|
||||||
|
- une page d'acceuil
|
||||||
|
- des articles
|
||||||
|
- des auteurs - qui sont potentiellement les gnuragistes
|
||||||
|
- des mots clés
|
||||||
|
- de quoi nous contacter
|
||||||
|
|
||||||
|
|
||||||
|
## Menu
|
||||||
|
|
||||||
|
Sous forme de boutons, sans sous-menu, qui se mettent les uns à côté des autres.
|
||||||
|
|
||||||
|
### Links (dans le pelicanconf.py)
|
||||||
|
|
||||||
|
Les liens « statiques » sont définit dans `pelicanconf.py`.
|
||||||
|
|
||||||
|
### Catégories (comme Faimaison)
|
||||||
|
|
||||||
|
À découvrir : les mécanismes de Pelican.
|
||||||
|
|
||||||
|
|
||||||
|
## Zone de titre(s)
|
||||||
|
|
||||||
|
- Un logo pour retourner sur la home page
|
||||||
|
- Un titre
|
||||||
|
- Un sous-titre
|
||||||
|
|
||||||
|
## Contenu
|
||||||
|
|
||||||
|
## Fork-Awsome
|
||||||
|
|
||||||
|
Puisque c'est un repo git qui se trouve dans `template/gnuragistes/static/css/Fork-Awesome`.
|
||||||
|
|
||||||
|
Pour éviter les problèmes, dans un premier temps le `.gitignore` contient ce chemin et le `pelicanconf.py` ignore aussi ce dossier grâce à `IGNORE_FILES = ['.git']`.
|
||||||
|
|
||||||
|
Il faudrait éventuellement approfondir le sujet en utilisant la notion de submodule ou subtree.
|
||||||
|
|
||||||
|
Voir : https://delicious-insights.com/fr/articles/git-submodules/
|
||||||
|
|
||||||
|
### Base
|
||||||
|
|
||||||
|
Se retrouve sur toutes les pages.
|
||||||
|
|
||||||
|
### Page d'acceuil
|
||||||
|
|
||||||
|
C'est pricipallement le fichier `template/gnuragistes/index.html` dont le contenu est pricipalement fait dans le template, mis à part quelques variables.
|
||||||
|
|
||||||
|
### Articles
|
||||||
|
|
||||||
|
C'est
|
Binary file not shown.
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 25 KiB |
Binary file not shown.
After Width: | Height: | Size: 246 KiB |
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
Title: Contact
|
||||||
|
ShortTitle: Contact
|
||||||
|
Date: 2019-10-10
|
||||||
|
Modified: 2021-07-04
|
||||||
|
---
|
||||||
|
|
||||||
|
# Contact
|
||||||
|
|
||||||
|
help@guragist.es
|
|
@ -0,0 +1,34 @@
|
||||||
|
---
|
||||||
|
pagename: GNU is Not Unix
|
||||||
|
title: GNU
|
||||||
|
subtitle: GNU N'est pas Unix
|
||||||
|
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27exploitation" target="_blank">système d'exploitation</a> ?
|
||||||
|
date: 2021-07-01
|
||||||
|
modified: 2021-07-04
|
||||||
|
---
|
||||||
|
|
||||||
|
<img src="/images/gnu/heckert_gnu_pink.svg" class="right" alt="Le dessin du gnou du projet GNU">
|
||||||
|
|
||||||
|
La [Tête de GNU](https://www.gnu.org/graphics/agnuhead.fr.html)<br />
|
||||||
|
une image avec une longue histoire,<br />
|
||||||
|
dessinée par Étienne Suvasa.
|
||||||
|
|
||||||
|
Depuis 1996,<br />
|
||||||
|
elle accompagne la horde,<br />
|
||||||
|
celles des gens qui font du libre,<br />
|
||||||
|
une aventure, une passion,<br />
|
||||||
|
un projet de société,<br />
|
||||||
|
des logiciels émancipateurs,<br />
|
||||||
|
du code source aux utilisateur·ice·s.
|
||||||
|
|
||||||
|
Les gnuragistes la voient en rose,<br />
|
||||||
|
pour poursuivre avec vous,<br />
|
||||||
|
son chemin, sa route, sa destinée,<br />
|
||||||
|
vers une informatique plus juste et équitable.
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
GNU est un [sigle récursif](https://fr.wikipedia.org/wiki/Sigle_r%C3%A9cursif) qui veut dire <i>GNU is Not Unix</i> et c'est un projet né en 1983.
|
||||||
|
En 2021, nous sommes heureux·ses et fière d'articuler notre activité « digitale » autour des valeurs qui accompagnent ce projet.
|
||||||
|
N'hésitez pas à flâner sur les pages Wikipédia du [projet GNU](https://fr.wikipedia.org/wiki/Projet_GNU) pour explorer une autre façon de faire de l'informatique.
|
||||||
|
Nous en parlons volontiers avec vous et si vous avez besoin de nous, vous trouverez notre adresse mail et notre téléphone sur [la page d'accueil](.).
|
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
pagename: Home
|
||||||
|
title: GNUragistes !
|
||||||
|
subtitle: Support Gnu/Linux - Réanimistes d'ordinateurs libres
|
||||||
|
description: help@gnuragist.es - 0466/47.25.33
|
||||||
|
date: 2019-10-10
|
||||||
|
modified: 2021-07-04
|
||||||
|
save_as: index.html
|
||||||
|
---
|
||||||
|
|
||||||
|
<img src="/images/home/zebras-sans-G-blanc.png" class="right" alt="Logo en tête de zèbre"></a>
|
||||||
|
gnuragistes,coucou<br />
|
||||||
|
les gentil·le·s desrangé·e·s,<br />
|
||||||
|
enragé·e·s du logiciel Libre,<br />
|
||||||
|
dédient quelques moments<br />
|
||||||
|
<br />
|
||||||
|
à vous pointer<br />
|
||||||
|
sur les dangers<br />
|
||||||
|
des mafias gafam,<br />
|
||||||
|
<br />
|
||||||
|
à prendre des résolutions,<br />
|
||||||
|
à chercher des vraies solutions,<br />
|
||||||
|
en plus, sans trop dépenser.<br />
|
||||||
|
<br />
|
||||||
|
juste de questionner,<br />
|
||||||
|
pourquoi autant de fortuné·e·s,<br />
|
||||||
|
sollicitent avec passion,<br />
|
||||||
|
votre temps et vos données.<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
Un soucis, des questions, besoin d’aide avec votre [GNU](/gnu.html)/[Linux](/linux.html) ? Nous pouvons vous aider vous ou votre association. Mises à jour, sauvegardes, imprimantes, carte d’identité électronique, installation de votre serveur personnel ou associatif sur base de [Yunohost](https://yunohost.org) (Mail, [Nextcloud](https://fr.wikipedia.org/wiki/Nextcloud), Agendas, Contacts, [Dokuwiki](https://fr.wikipedia.org/wiki/DokuWiki)…)
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<a href="https://www.openstreetmap.org/way/228420463" target="_blank">
|
||||||
|
<img src="/images/home/map.png" class="right" alt="Carte de Schaerbeek">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
Au [Hacklab](https://hacklab.brussels/)<br />
|
||||||
|
Avenue Princesse Elisabeth 46 <br />
|
||||||
|
1030 Schaerbeek
|
||||||
|
|
||||||
|
<p class="white">
|
||||||
|
Devenez membres à prix libre.<br />
|
||||||
|
Versement mensuel souhaité.<br />
|
||||||
|
IBAN: BE63 5230 8118 2308<br />
|
||||||
|
BIC: TRIOBEBB
|
||||||
|
</p>
|
||||||
|
|
||||||
|
En semaine, la journée, le soir ou le week-end. et si vous avez envie de lire un truc, pourquoi pas la [biographie de RMS](/fichiers/Richard Stallman et la révolution du logiciel libre.pdf) ?
|
||||||
|
|
||||||
|
C'est maGNUfique!
|
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
pagename: Linux
|
||||||
|
title: Linux
|
||||||
|
subtitle: un noyau libre pour des logiciels libres
|
||||||
|
description: Mais c'est quoi un <a href="https://fr.wikipedia.org/wiki/Noyau_de_syst%C3%A8me_d%27exploitation" target="_blank">noyau</a> ?
|
||||||
|
date: 2021-07-01
|
||||||
|
modified: 2021-07-04
|
||||||
|
---
|
||||||
|
|
||||||
|
<img src="/images/linux/ewing-tux.png" class="right" alt="TUX, la mascote de linux, mais en rose"></a>
|
||||||
|
|
||||||
|
La mascotte de Linux,<br />
|
||||||
|
c'est [Tux](https://fr.wikipedia.org/wiki/Tux),<br />
|
||||||
|
un manchot mignon,<br />
|
||||||
|
pour représenter un noyau costaud.</p>
|
||||||
|
|
||||||
|
[Linux](https://fr.wikipedia.org/wiki/Noyau_Linux) est dans vos ordiphones,<br />
|
||||||
|
dans vos boxes Internet,<br />
|
||||||
|
dans vos ordinateurs libres,<br />
|
||||||
|
dans les serveurs du monde entier,<br />
|
||||||
|
et même jusque Mars, dans le drône Ingenuity.
|
||||||
|
|
||||||
|
Un noyau de code,<br />
|
||||||
|
qui fait germer des envies de liberté,<br />
|
||||||
|
au cœur de tant de systèmes informatiques,<br />
|
||||||
|
trop souvent ignoré, il vous invite à explorer.
|
||||||
|
|
||||||
|
Les [gnuragistes](.) le voient en rose,<br />
|
||||||
|
pour poursuivre avec vous,<br />
|
||||||
|
son chemin, sa route, sa destinée,<br />
|
||||||
|
vers une informatique plus juste et équitable.
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
Des milliers de contributeurs, trop peu de contributrices qui jonglent aves du code pour rendre possible le fonctionnement du matériel.
|
||||||
|
Parce que oui, le rôle principal d'un noyau c'est de piloter l'électronique que vous avez entre le mains.
|
||||||
|
[Depuis 1991](https://en.wikipedia.org/wiki/Linux_kernel_version_history), des individus, des constructeurs, des fondeurs, des organisations allant de l'entreprise capitaliste à l'association sans but lucratif, en passant par les fondations, [pondent des lignes de codes](https://git.kernel.org/).
|
||||||
|
Pour eux, pour elles, pour nous, pour vous, sans se soucier de ce que vous en ferez. Il faut juste que ça fonctionne et que ce soit fiable.
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
Title: Un projet collectif
|
||||||
|
ShortTitle: Collectif
|
||||||
|
Date: 2021-07-01
|
||||||
|
Modified: 2021-07-04
|
||||||
|
---
|
||||||
|
|
||||||
|
C'est ensemble, ou ce n'est pas.
|
||||||
|
|
||||||
|
Sieste, recherche et développement.
|
|
@ -0,0 +1,6 @@
|
||||||
|
Title: Le projet GNUragistes
|
||||||
|
ShortTitle: Projet
|
||||||
|
Date: 2021-07-01
|
||||||
|
Modified: 2021-07-04
|
||||||
|
|
||||||
|
Le plus chouette projet de tout les temps !
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*- #
|
||||||
|
|
||||||
|
TOOLBOX = False # Displays some variables from toolbox.html
|
||||||
|
|
||||||
|
AUTHOR = 'Gnuragistes'
|
||||||
|
SITENAME = 'Gnuragist.es'
|
||||||
|
SITEURL = 'https://gnuragist.es'
|
||||||
|
|
||||||
|
PATH = 'content'
|
||||||
|
STATIC_PATHS = ['images','fichiers']
|
||||||
|
PAGE_PATHS = ['pages']
|
||||||
|
|
||||||
|
TIMEZONE = 'Europe/Brussels'
|
||||||
|
|
||||||
|
DEFAULT_LANG = u'fr'
|
||||||
|
|
||||||
|
# Les fichiers produits sont mis dans des dossiers
|
||||||
|
ARTICLE_URL = '/{category}/{slug}.html'
|
||||||
|
ARTICLE_SAVE_AS = '{category}/{slug}.html'
|
||||||
|
PAGE_SAVE_AS = '{slug}.html'
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Liens statiques utilisés dans le menu.
|
||||||
|
# ('texte affiché','url','icone ForkAwsome')
|
||||||
|
# Pour les icones ForkAwsome voir https://forkaweso.me/Fork-Awesome/cheatsheet/
|
||||||
|
MENUITEMS = (('Home', './', 'fa-home'),
|
||||||
|
('Wiki', 'https://wiki.gnuragist.es', 'fa-book'),
|
||||||
|
('Git Sources', 'https://git.gnuragist.es/git/wildebeest/website','fa-gitea'),
|
||||||
|
('Webmail', 'https://mamifere.gnuragist.es','fa-envelope'),
|
||||||
|
('Pads', 'https://doc.gnuragist.es','fa-file-text'),
|
||||||
|
('Forum', 'https://ps.zoethical.org/c/ps/gnuragistes/130','fa-activitypub'),)
|
||||||
|
|
||||||
|
# Social widget
|
||||||
|
SOCIAL = (('You can add links in your config file', '#'),
|
||||||
|
('Another social link', '#'),)
|
||||||
|
|
||||||
|
DEFAULT_PAGINATION = True
|
||||||
|
|
||||||
|
THEME = 'template/gnuragistes'
|
||||||
|
|
||||||
|
# Exclure des éléments inutiles… mais ça fonctionne pas ??
|
||||||
|
#STATIC_EXCLUDES = ['template/gnuragistes/static/css/Fork-Awesome/.github', 'template/gnuragistes/static/css/Fork-Awesome/*']
|
||||||
|
|
||||||
|
# Uncomment following line if you want document-relative URLs when developing
|
||||||
|
#RELATIVE_URLS = True
|
||||||
|
|
||||||
|
|
||||||
|
DISPLAY_PAGES_ON_MENU = True
|
||||||
|
# Pour ignorer le contenu de template/gnuragistes/static/css/Fork-Awesome/.git et tout ce qui est .git
|
||||||
|
IGNORE_FILES = ['.git']
|
|
@ -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 = 'https://gnuragist.es'
|
||||||
|
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 = ""
|
|
@ -0,0 +1,131 @@
|
||||||
|
# -*- 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'],
|
||||||
|
# Remote server configuration
|
||||||
|
'ssh_user': 'admin',
|
||||||
|
'ssh_host': 'gnuragist.es',
|
||||||
|
'ssh_port': '22',
|
||||||
|
'ssh_path': '/var/www/my_webapp/www',
|
||||||
|
# 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
|
||||||
|
|
||||||
|
def cached_build():
|
||||||
|
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']
|
||||||
|
watched_globs = [
|
||||||
|
CONFIG['settings_base'],
|
||||||
|
'{}/templates/**/*.html'.format(theme_path),
|
||||||
|
]
|
||||||
|
|
||||||
|
content_file_extensions = ['.md', '.rst']
|
||||||
|
for extension in content_file_extensions:
|
||||||
|
content_glob = '{0}/**/*{1}'.format(SETTINGS['PATH'], extension)
|
||||||
|
watched_globs.append(content_glob)
|
||||||
|
|
||||||
|
static_file_extensions = ['.css', '.js']
|
||||||
|
for extension in static_file_extensions:
|
||||||
|
static_file_glob = '{0}/static/**/*{1}'.format(theme_path, extension)
|
||||||
|
watched_globs.append(static_file_glob)
|
||||||
|
|
||||||
|
for glob in watched_globs:
|
||||||
|
server.watch(glob, cached_build)
|
||||||
|
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))
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 540fa1467f6381b6212635d9e7cc222cd1faa280
|
|
@ -0,0 +1,82 @@
|
||||||
|
/* classes */
|
||||||
|
|
||||||
|
.toolbox
|
||||||
|
{
|
||||||
|
color:white;
|
||||||
|
background-color: grey;
|
||||||
|
position: fixed;
|
||||||
|
overflow: hidden;
|
||||||
|
z-index: 2400;
|
||||||
|
opacity: 0.70;
|
||||||
|
right: 0px;
|
||||||
|
top: 0px !important;
|
||||||
|
-webkit-transition: all 0.5s ease-in-out;
|
||||||
|
-moz-transition: all 0.5s ease-in-out;
|
||||||
|
-ms-transition: all 0.5s ease-in-out;
|
||||||
|
-o-transition: all 0.5s ease-in-out;
|
||||||
|
transition: all 0.5s ease-in-out;
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hide
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.left
|
||||||
|
{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.white
|
||||||
|
{
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer
|
||||||
|
{
|
||||||
|
color:magenta;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button
|
||||||
|
{
|
||||||
|
display:inline-block;
|
||||||
|
padding:0.35em 1.2em;
|
||||||
|
/* border:0.1em solid magenta; */
|
||||||
|
margin:0 0.3em 0.3em 0;
|
||||||
|
border-radius:0.12em;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-decoration:none;
|
||||||
|
color: lightgreen;
|
||||||
|
text-align:center;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button > i
|
||||||
|
{
|
||||||
|
padding-right: 0.5em;
|
||||||
|
color: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:hover, a:hover
|
||||||
|
{
|
||||||
|
color:#0F0F0F;
|
||||||
|
background-color: lightgreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:hover > i
|
||||||
|
{
|
||||||
|
padding-right: 0.5em;
|
||||||
|
color: #0F0F0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.selected
|
||||||
|
{
|
||||||
|
/* border:0.1em solid lightgreen; */
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
/* includes */
|
||||||
|
@import "classes.css";
|
||||||
|
@import "Fork-Awesome/css/fork-awesome.min.css";
|
||||||
|
|
||||||
|
/* fonts */
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: "OpenDyslexic";
|
||||||
|
src: url("../fonts/OpenDyslexic-Regular.eot");
|
||||||
|
src: url("../fonts/OpenDyslexic-Regular.woff") format("woff"),
|
||||||
|
url("../fonts/OpenDyslexic-Regular.ttf") format("truetype"),
|
||||||
|
url("../fonts/OpenDyslexic-Regular.svg") format("svg");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* common html tags */
|
||||||
|
body
|
||||||
|
{
|
||||||
|
background-color: #0F0F0F;
|
||||||
|
font-family: OpenDyslexic;
|
||||||
|
color: darkturquoise;
|
||||||
|
max-width: 85%;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-top: 1rem;
|
||||||
|
line-height: 3rem;
|
||||||
|
/*background: linear-gradient(to left top, #0F0F0F, #000) fixed;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
ul
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 8vh;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 2rem;
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
li a,
|
||||||
|
a
|
||||||
|
{
|
||||||
|
text-decoration: none;
|
||||||
|
color: lightgreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1
|
||||||
|
{
|
||||||
|
font-size: 4rem;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2
|
||||||
|
{
|
||||||
|
font-size: 3rem;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3
|
||||||
|
{
|
||||||
|
font-size: 2rem;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr
|
||||||
|
{
|
||||||
|
border: 0.3rem solid grey;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
img
|
||||||
|
{
|
||||||
|
max-width: 50%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
p
|
||||||
|
{
|
||||||
|
font-size: 2rem;
|
||||||
|
/*text-transform: uppercase;*/
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for smaller screens transformations */
|
||||||
|
@media (max-width: 1024px)
|
||||||
|
{
|
||||||
|
/* common html tags */
|
||||||
|
body
|
||||||
|
{
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
div
|
||||||
|
{
|
||||||
|
font-size: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1
|
||||||
|
{
|
||||||
|
font-size: 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2
|
||||||
|
{
|
||||||
|
font-size: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3
|
||||||
|
{
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
img
|
||||||
|
{
|
||||||
|
max-width: 90%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
p
|
||||||
|
{
|
||||||
|
font-size: 2rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 8.4 KiB |
|
@ -0,0 +1,49 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr" dir="ltr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>{% block pagename %}{%endblock%} | {{SITENAME}}</title>
|
||||||
|
<meta name="keywords" content="support gnu/linux, bruxelles, logiciels libres, collectif">
|
||||||
|
<meta name="description" content="Gnuragistes, support GNU/Linux et collectivité" />
|
||||||
|
<meta name="robots" content="archive,index,follow" />
|
||||||
|
<link href="./theme/css/gnuragistes.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link rel="shortcut icon" href="./theme/images/zebras-favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id=menu>
|
||||||
|
{% for text, link, icon in MENUITEMS %}
|
||||||
|
<a href="{{ link }}" class="button {% if text.lower() == page_name %}selected{% endif %}">
|
||||||
|
{% if icon != "none" %}<i class="fa {{icon}}"></i>{% endif %}
|
||||||
|
{{ text }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% for menu_page in PAGES|sort(attribute='order')|rejectattr('hiddeninmenu') %}
|
||||||
|
<a href="/{{ menu_page.url }}" class="button {% if page and page.shorttitle == menu_page.shorttitle %}selected{% endif %}">
|
||||||
|
{{ menu_page.shorttitle }}</a>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1>{% block title %}{% endblock %}</h1>
|
||||||
|
|
||||||
|
<h2>{% block subtitle %}{% endblock %}</h2>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<h3>{% block description%}{% endblock %}</h3>
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer" class="footer">
|
||||||
|
Copyleft 2021, les Gnuragistes.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if TOOLBOX %}
|
||||||
|
{% extends "toolbox.html" %}
|
||||||
|
{% endif %}
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,9 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block pagename %}{{ page.pagename }}{% endblock %}
|
||||||
|
{% block title %}{{ page.title }}{% endblock %}
|
||||||
|
{% block subtitle %}{{ page.subtitle }}{% endblock %}
|
||||||
|
{% block description %}{{ page.description }}{% endblock %}
|
||||||
|
{% block date %}{{ page.date | strftime('%a, %d %B %Y') }}{% endblock %}
|
||||||
|
{% block author %}{{ page.author }}{% endblock %}
|
||||||
|
{% block content %}{{ page.content }}{% endblock %}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}{{ article.shorttitle }}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="node node-full node-page node-page--services">
|
||||||
|
<h1>{{ article.title }}</h1>
|
||||||
|
{{ article.content }}
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p class="services-common">
|
||||||
|
Afin de bénéficier de ce service, il est nécessaire d'être <a href="/ressources/adherer.html">membre de l'association</a>,<br />
|
||||||
|
puis de <a href="/pages/contact.html">contacter le bureau</a> pour demander l'abonnement à un service.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="services-return">
|
||||||
|
<a href="/pages/services.html">
|
||||||
|
<i class="fa fa-caret-left"></i> Tous les services proposés par FAImaison
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -0,0 +1,6 @@
|
||||||
|
<div id="toolbox" class="toolbox">
|
||||||
|
<b>Toolbox…</b><br />
|
||||||
|
page_name = {{ page_name }}<br />
|
||||||
|
output_file = {{ output_file }}<br />
|
||||||
|
slug = {{ slug }}<br />
|
||||||
|
</div>
|
Loading…
Reference in New Issue