# GSL: Statique Littérateur ------------------------------------------------------------------------ GSL est un générateur de blogs/sites-web basé sur leur nom de domaine, écrit en bash, afin de ne réduire ses dépendances au minimum. Les pages générées sont presque entièrement statiques, à l'exception du module de liste des derniers articles. Nginx peut être facilement configuré pour interprêter ce module. # Dépendances ------------------------------------------------------------------------ - bash - coreutils - curl (to check Posts links response) - rsync # GSL: Installation ------------------------------------------------------------------------ Une procédure d'installation via un setup est en cours de test. Il est aussi possible et recommandé sous debian de l'installer grâce à son paquet deb. Pour une installation manuelle, clonez ce dépôt, et copiez les dossiers déjà pré-établis dans le système. GSL n'utilise pas sudo, il vous faut donc donner les droits aux dossiers (chown -R) à l'utilisateur (sauf au dossier /usr/local/bin). Pour ce dossier, vous donnerez les droits via chown USER:USER /usr/local/bin/gsl ## Configuration du DOMAIN (selon le choix de l'utilistaeur via $ gsl new) : - HOME: ~/.config/gsl - GLOBAL: /var/lib/gsl - Dossier: --Prefix/domains/ (créé par GSL via $ gsl new) ### Données du DOMAIN : - Dossier: --Prefix/DOMAIN/ (créé par GSL) - - Fichiers: DOMAIN.conf, authors.db (créé par GSL) - - Dossier: --Prefix/DOMAIN/templates/ (créé par GSL - pour vos css, logos...) ## Dossier de configuration de GSL : /etc/gsl/ - Fichier: gsl.conf ## Dossier principal : /var/lib/gsl/ - Folder: db (créé par GSL) - Dossier: helps - Dossier: scripts - Fichier: README.md, README-english.md ## Dossier des logs: /var/log/gsl/ - Fichier: gsl.log (créé et géré par GSL via $ gsl log [OPT]...) ## Dossier de l'éxécutable : /usr/local/bin/ - Fichier: gsl ## Dossier d'autocomplétion : /usr/share/bash-completion/completions/gsl/ - Fichier: gsl # Comment configurer un domaine ------------------------------------------------------------------------ Des questions vous seront posées lorsque vous voudrez ajouter un domaine (exemple.com). Les données renseignées seront utilisées pour créer le fichier DOMAIN.conf. Une question spécifique pour les fichier des articles vous sera posée afin d'établir un dossier de stockage de vos articles. Vous pourrez en créer à loisir autant que vous voulez plus tard. ``` # helps gsl help gsl help new gsl help install # Ajouter un domaine gsl new ``` ## Définir un dossier pour les articles du DOMAIN Si ce n'est pas déjà fait par GSL, ou que vous voulez ajouter un dossier pour y stocker et convertir en HTML vos articles pour un DOMAIN précis : - Ajouter/créer un dossier de votre choix - Créer dedans, un fichier vide nommé gsl.DOMAIAN (gsl.exemple.com) ## Ajouter un auteur ``` cd MON-DOSSER-ARTICLES gsl author add ``` ## Créer un article Le moteur de convertion est nouveau, et est un mélange entre markdown et reSTructuredText. Il est simple à apprendre et à utiliser. - Créer un fichier (monarticle).gsl (extension .gsl) - Suivez le guide plus bas pour comprendre les notions Vous devrez le faire valider par GSL : ``` gsl check gsl check monarticle.gsl # Vérfier que monarticle.gsl gsl check -F Forcer la vérification gsl check -F monarticle.gsl # Forcer la vérification de monarticle.gsl ``` ## Convertir un ou tous les articles Si votre article n'a pas d'erreurs, vous pouvez le convertir en HTML. ``` gsl make gsl make -F # Forcer la reconstruction) gsl make -F monarticle.gsl # Forcer la reconstruction de monarticle.gsl ``` Votre article sera prêt dans le dossier webserver (ex: /var/www/DOMAIN/wip) Vous pourrez donc vérifier son rendu. Si vous êtes satisfait, vous pouvez le déployer "officiellement" dans www ``` # Vous pouvez utiliser l'autocompletion pour les articles gsl www add monarticle.gsl ``` # Créer un Template ------------------------------------------------------------------------ Vous devrez pour que votre site soit à vôtre goût créer et définir les styles dans styles.css. Placez ce fichier (en fonction du choix de votre configuration du DOMAIN) dans : - HOME: ~/.config/gsl/domains/DOMAIN/templates/ - GLOBAL: /var/lib/gsl/domains/DOMAIN/templates/ Concernant les contenus images et fichiers dans vos articles, placez-les dans les dossiers - .../templates/images - .../templates/files Astuce: Une fois votre article créé, vous verrez dans sa source HTML que beaucoup d'éléments ont une class="acronymechoisi_uneclass". Utilisez ces classes dans style.css pour décorer votre site à votre goût. Pour mettre à jour et voir vos modifications de styles ``` gsl sync ``` GSL synchronisera votre template sur votre webserver. Rechargez votre page dans votre navigateur # Si vous avez modifié header ou footer.html, ou si de nouvelles fonctions sont arrivées et concernent les pages HTML dans GSL, il vous faudra reconstruire toutes les pages ``` gsl make -F ``` # Comment écrire un article ------------------------------------------------------------------------ Votre article doit contenir 2 sections. Les Metas avant #1 et l'article à partir de ce repère (servant de titre h1). - METAS : configurer votre article (titre, date, liens...) - ARTICLE : Contenue rédactionnel avec quelques marqueurs (gras...) ## METAS obligatoires (avant #1) ``` title: POST TITLE slug: POST-TITLE (si espaces, GSL les convertira en -) info: DESCRIPTION (À propos de cet article) author: NAME (doit être enregistré via ($ gsl author add) date: YYYY-MM-DD tags: TAG1,Mon TAG2,TAG3 (séparé par une virgule) ``` ### Page ou Article ? Vous pouvez spécifier pour chaque article si c'est une page ou un article Si non renseigné, GSL ajoutera le type: post (article) par défaut à la première ligne de votre article ``` # Page (index, 404, about...) # Création selon le slug: /POST-TITLE.html type: page # Article (monarticle) # Création selon le slug: /POST-TITLE/index.html type: post ``` ## METAS optionnelles (avant #1) Définir les marqueurs (abbr:, link:...) et utiliser " : " comme séparateur ``` abbr: COURT : LONG file: NOM : NOM-DU-FICHIER : Text alternatif link: NOM : URL : Text alternatif code: NUMERO : NOM-DU-FICHIER : Text alternatif image: NUMERO : NOM-DU-FICHIER : TEXT-ALTERNATIF ``` ## Contenu de l'article: Les marqueurs (ex: *__Mon-super-fichier*) *doivent commencer et finir sur la même ligne*. Pour les abréviations (abbr:), écrivez juste (ex: *COURT*). ### Paragraphes Au début d'une nouvelle ligne, ouvrez avec ( et fermez avec ). Vous pouvez utiliser 4 classes de paragraphes différentes : ( 1 ( 2 ( 3 Dans l'article... ``` ( 2 Paragraphe avec une classe 2 (css) ) ( Paragraphe sans numéro de classe ) ``` ### Liens Définir en METAS ``` link: Mon lien : URL : Alt text) ``` Dans l'article... (ajoutez + pour ouvrir dans un nouvel onglet) ``` _Mon lien _Mon lien+ ``` ### Fichiers Définir en METAS ``` file: Mon fichier : FILENAME : ALT-TEXT ``` Dans l'article... ``` __Mon fichier ``` ### Images Définir en METAS ``` image: 1 : FILENAME : ALT-TEXT image: 2 : FILENAME : ALT-TEXT ``` Dans l'article... Définir le marqueur ```_image``` sur une seule ligne et spécifiez les valeurs séparées par ":" - Numero d'image - Alignement: l,r, ou c (g,d également) pour gauche, droite, centre) - Longueur width: juste le nombre - Largeur height: juste le nombre - Champ non vide: Lien de l'image dans un nouvel onglet Exemple d'images affichées l'une à côté de l'autre ``` ( _image:1 _image:2:c:640:480 _image:3:c:320:240:+ ) ``` Exemple d'images affichées l'une en dessous de l'autre, dont la première peut s'ouvrir dans un nouvel onglet ``` ( _image:1:c:640:480:+ ) ( _image:2:c:1920:1080 ) ``` ### Block-Code depuis un fichier Définir en METAS ``` code: 1 : FILENAME : Alt Text ``` Dans l'article... ``` _code:1 ``` ### Écrire en très gras Dans l'article... ``` **c'est du surgras** c'est in**défini**ssable il ad**juge** : pas de pub ! ``` ### Gras Dans l'article... ``` *c'est en gras* ``` ### Italique Dans l'article... ``` C'est /en italique/ ``` ### Code en ligne Info: ¤ = alt-gr + $ sur un clavier FR azerty) Dans l'article... ``` ¤gsl help -w¤ ``` ### Citation simple (au début de la ligne, mettez 3x -) Dans l'article... ``` --- ( Une citation simple dans un paragraphe ) --- ``` ### Citation avancée Dans l'article... ``` --- _cite : Richard Matthew Stallman _link : https://stallman.org/ _lang : en ( In the free/libre software movement, we develop software that respects users' freedom, so we and you can escape from software that doesn't. I could have made money this way, and perhaps amused myself writing code. But I knew that at the end of my career, I would look back on years of building walls to divide people, and feel I had spent my life making the world a worse place ) --- ``` ### Citation avancée : optionnel Ajoutez ces marqueurs, si connus dans la citation, par ex sous ```_cite``` ``` _year: 2021 _book: Esperanza 64 ``` ### Créer des listes L'arborescence est "infinie". - Chaque contenu de la liste *doit être sur la même ligne* Dans l'article... - utilisez ```=``` pour définir l'arborescence d'une liste simple - utilisez ```ø``` pour définir une liste ordonnée (alt+gr + o (FR azerty)) ``` ( Voici une liste = Fruits : *mangez-en* == Kiwis == Fraises === pas mûres == Bananes === Plantins = Légumes == Haricots === Rouges === Verts Fin de la liste ) ``` ### Ajouter des lignes vides Vous pouvez ajouter des ```
``` dans votre rédaction, mais pour une lecture plus propre de votre article, vous pouvez utiliser le caractère ```|``` *au tout début d'une nouvelle ligne* Dans l'article... ``` #1 Mon titre ( Ceci est un long paragraphe (Un peu d'imagination...) | Retour "forcé" à la ligne ) ``` # Comment gérer la sidebar La gestion de la sidebar est manuelle. Un article doit être convertit avec make avant de pouvoir l'ajouter à la position ddsirée. Le nombre d'articles maximum dans la sidebar est configurable dans /etc/gsl/gsl.conf Quelques exemples d'utilisations ``` # Liste les articles de la sidebar dans l'ordre gsl sidebar # Ajoute monarticle en position 1 gsl -S add 1 monarticle # Enlève monarticle2 de la sidebar gsl -S remove monarticle2 # monarticle5 est en position 3. Le replacer par monarticle4 gsl -S -A 3 monarticle4 ``` # HELP COMMAND ``` $ gsl [ARG] readme : Show README.md instructions help | -h [OPT] : This Help install : Show process installation new : Adding a DOMAIN write | -w : How to write a Post new | -N : Add and configure a new DOMAIN log | -L [OPTS] : Show logs from all sessions clean | -C : Logs saved to {DATE}.gsl.log and cleaned -i | -w | -e : from levels (infos, warnings, errors) -s : from last session only [TERM] : [TERM] : case insensitive, regex 'T1.*T2' (i.e. $ gsl log -e -s code) author | -A [OPT] : List authors from DOMAIN set in PWD folder add : Add author(s) for DOMAIN remove : Remove author(s) for DOMAIN edit | -E [FILE] : Open in default EDITOR [FILE] or with nano db [FILE] : Show DB statuses from [FILE] sync [OPT] : Sync Templates to www and wip wip : Only to wip server (also done with make) www : Only to www server (also done with www) check | -C [OPT] [FILE] : Check Posts errors from PWD folder or [FILE] -F : Force check again make | -M [OPT] [FILE] : Convert Posts from PWD folder or [FILE] to HTML file in server -F : Force Make again www [OPT1] [OPT2] : Add/Remove Post from www server [OPT1]: add : Add all/[FILE] to www server rmove : remove all/[FILE] from www server [OPT2]: all : Select all post with wip statuses [FILE] : Select specific post (if wip status) sidebar | -S [ARG] [FILE]: Show Posts in list [ARG]: add | -A : Must set a Position number before [FILE] Max posts in list is set in gsl.conf Replace post position if post not exists in list remove | -R : No Position to set, just [FILE]. add/remove will build last-posts-list.html create | -C : rebuild last-posts-list.html version | -v : Show local versionn -vv : Shown local and repo Versions ```