diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1b24f9d..62f502c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,8 +4,147 @@ GSL changes from releases. You can send an issue :
- repo: https://git.a-lec.org/echolib/gsl/-/issues
- Contact xmpp: im@echolib.re
-## [0.0.37]
+## [0.0.9]
+## Please, see help (and documentations in help folder)
+
+### Add
+- New code about everywhere, more comments, cleaner
+- nano dependence
+- Check installed configuration at launch
+- Dedicated functions for ARGUMENTS in specific files category
+- - check: gsl__post_checkers
+- - make,sidebar: gsl__post_makers
+- - sync,www,wip gsl__srv_manager
+- - log: gsl__log_manager
+- - db: gsl__db_manager
+- - author,new,setdir: gsl__domain_manager
+- - edit: gsl__edit_file
+- - stats: gsl__stats
+
+### Installation
+- new files:
+- - gsl__srv_manager: for all about server
+- - gsl__version: for -v, -vv, --version options
+- - gsl__domain_manager: for OPT author, new, setdir
+- - gsl__edit_file: functions to edit some configuration files
+- - gsl__do_commons: Common functions to filter article lines
+- - gsl__HTML_template: functions to create HTML pages
+- New empty folder in installation:
+- - /var/lib/gsl/db: for all DBs (.gitkepp)
+- - /var/lib/gsl/domains: for all domains (.gitkeep)
+- - /var/log/gsl: for logs files (.gitkeep)
+- New help folder in
+- - /var/lib/gsl/help (removed "helps" one)
+
+### Logs
+- Better logs harmony
+- New fields in log for article filename and domain name
+- Specific number of characters spaces in some log fields
+- More verbose
+- "automatic" level log set from called functions
+- Colored levels: war (yellow), err (red)
+
+### Databases
+- Dedicated per article
+- Folder: /var/lib/gsl/db/
+- New file format: domains.db
+- More datas with new stats. Quicker sourced datas
+- Dedicated articles in sub-directory "DOMAIN"
+- Check if corrupted DB
+- Database and wip files won't be removed if errors in article
+- If corrupted Database, try restoring www & wip statuses at new check
+
+### Changes
+- Changes in mapping process:
+- - Processes get needed headers FIRST, then split article in 2 sections
+- DOMAIN Profile is only in /var/lib/gsl/domains/DOMAIN/
+- Variables in DOMAIN.conf file has no more "gsl_"
+- Some translated words in HTML page from lang set DOMAIN (fr || en)
+- Between markers (code): put "everything" you want
+- New CSS classes: see gsl help css or documentation
+- Mark image (i.e. "_image:1:mycss:50%:25%:+)"
+- - define your own css class 'mycss'
+- - define unity ("%","px"... with height and witdth)
+- New lists. Mix "+" (ol) and "=" (ul) and write an item on several lines
+- Between hX titles: new div css (none if empty content)
+- Changing article Type will remove old wip file (not www file !)
+- sync: Logs not shown but added
+- stats properties file is now in /www (online)
+
+### Process check [argument]
+- slug: log err if already exists (log war if not well formated)
+
+### new ARGUMENTS
+- new (page|post) (name): Create article, show its content + check it
+- new domain: New domain configuration creator
+- edit domains: Set/Edit registred domains database
+- edit author: Same as author edit
+- author edit: Opens nano to Add/Remove authors (one per line) by DOMAIN
+- setdir: Set current folder for your DOMAIN (show if one)
+- check -N: Only check newer articles not in DB
+- clean all: Remove all backups (only) files
+- sidebar: add|replace|latest|oldest (See gsl help)
+- www sync: Same as sync www
+- wip ...: Same as www but for wip
+
+### Markers
+- css: MYCLASS Customize each article with your CSS (optional)
+- brut: Insert brut code from file
+- - In article header: "NBR : FILENAME"``
+- - In article content: "_brut: NBR"
+- "_image:VALUE:MYCSS:WIDTH:HEIGHT:TARGET" (no target=no HTML link)
+- Strong mark: '•...•' (alt+gr + ;) on french azerty keyboard)
+- Bold mark: '·...·' (alt+gr + :) on french azerty keyboard)
+- Emphasis mark: '”...”' (alt+gr + n) on french azerty keyboard)
+- Strike mark: '×...×' (alt+gr + shift + ;) on french azerty keyboard
+- ```<<``` and ```>>``` as "start" and "close" marker for lists
+
+### Template
+- included basic header, metas and footer
+- All about template is in /var/lib/gsl/scripts/gsl__HTML_template
+- - No more header.html in templates folder
+- - - Edit your own in create__HTML_header() function
+- In /var/lib/gsl/domains/DOMAIN/templates/
+- - Auto created metas.html and footer.html if not exist
+- - Edit your own footer.html
+- - Edit your own metas per DOMAIN for HTML ```
``` in metas.html
+- - - included basic pre-registred meta from datas article
+- - No CSS styles included: create your own (see classes and IDs used in doc)
+- For all changes here, after gsl make, use gsl sync...
+
+### Sidebar
+- No more /var/lib/gsl/domains/DOMAIN/templates/last-posts-list.html
+- - Remove it with files xxx.X in /var/lib/gsl/domains/DOMAIN/X-tra/
+- New HTML file: /var/lib/gsl/domains/DOMAIN/templates/sidebar.html
+- - Created with files /var/lib/gsl/domains/DOMAIN/X-tra/sidebar/(POS).html
+- articles are sorted from epoch date (in DB) with false time at check
+
+### Statoolinfos (added properties for www status)
+- gsl.articles
+- gsl.articles.pages
+- gsl.articles.posts
+- gsl.authors
+- gsl.articles.tags
+- gsl.articles.words
+- gsl.articles.quotes
+- gsl.articles.paragraphs
+- gsl.articles.links
+- gsl.articles.links.online
+- gsl.articles.lists
+- gsl.articles.lists.items
+- gsl_articles.images
+
+### CRITIK
+- Remove all files in /var/lib/gsl/db/
+- Use: ```gsl new domain```, give your registred DOMAIN name
+- - Answer Y to autofix old configurations files and folders
+- - Do it for each DOMAIN you registred
+- - will add site_max_list=5 (default) in domain configuration file
+- Use ```gsl check``` in your articles folder
+
+
+## [0.0.37]
### Add
- changelog
- Make stats at each www call
diff --git a/README.md b/README.md
index c99027a..34cb566 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,11 @@
------------------------------------------------------------------------
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
+écrit en bash, afin de 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.
+liste des derniers articles (sidebar) placé en include. Nginx peut être
+facilement configuré pour interprêter ce module.
+
# Dépendances
------------------------------------------------------------------------
@@ -13,206 +14,179 @@ interprêter ce module.
- bash
- coreutils
- curl (to check Posts links response)
-- rsync
+- rsync, nano
# GSL: Installation
------------------------------------------------------------------------
-Une procédure d'installation via un setup est en cours de test. Il est
+Une procédure d'installation via un setup est en préparation. Il est
aussi possible et recommandé sous debian de l'installer grâce à son
-paquet deb.
+paquet deb (construit par make).
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
+déjà pré-établis dans le système (avec sudo). GSL n'utilise pas sudo,
+il vous faut donc donner les droits des dossiers (chown -R) à l'utilisateur
+(sauf au dossier /usr/local/bin). Pour ce dossier, vous donnerez les
+droits au fichier gsl seulement
-## 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)
+Reportez-vous à la documentation dans le dossier help
-### 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
------------------------------------------------------------------------
+Préparer un fichier de logo. L'important sera de renseigner le nom du
+fichier lors du questionnaire.
+
+Attention: GSL aura besoin de créer des sous-dossier dans le serveur,
+renseigné dans le questionnaire. (i.e. /var/www/). Il faut donc lui
+donner les droits
+
+``
+$ gsl new) domain
+```
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.
+(exemple.com). Les données renseignées seront utilisées pour créer la
+configuration (voir la documentation d'installation)
-```
-# helps
-gsl help
-gsl help new
-gsl help install
-# Ajouter un domaine
-gsl new
-```
-
-## Définir un dossier pour les articles du DOMAIN
+## 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 :
+pour y stocker vos articles bruts pour un DOMAIN précis :
-- Ajouter/créer un dossier de votre choix
+```
+gsl help -d
+cd MYFOLDER
+gsl setdir
+```
+
+ou:
+- Aller dans/créer un dossier de votre choix
- Créer dedans, un fichier vide nommé gsl.DOMAIAN (gsl.exemple.com)
-## Ajouter un auteur
+
+## Ajouter / retirer un auteur
+------------------------------------------------------------------------
+Après avoir enregistré un domain et configuré un dossier pour les
+articles. **Un auteur par ligne !**
+
```
cd MON-DOSSER-ARTICLES
-gsl author add
+gsl author edit
```
+
## Créer un article
-Le moteur de convertion est nouveau, et est un mélange entre markdown et
+------------------------------------------------------------------------
+Le moteur de convertion est nouveau. C'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 :
+Reportez-vous à la documentation dans le dossier help, ou:
```
-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
+gsl help -w
```
-## 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
-```
+## Procédures de prévisualisation et mise en ligne
+------------------------------------------------------------------------
+- gsl check monarticle.gsl (vérifie l'écriture en gsl)
+- gsl make monarticle.gsl (Connvertit en HTML - dossier wip)
+- gsl www add monarticle.gsl (copiel la page dans le dossier www)
# 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
+d'articles maximum dans la sidebar est configurable dans le fichier de
+configuration du domaine (DOMAIN.conf)
```
-# 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
+gsl sidebar replace 2 monarticle.gsl
```
-# Besoin d'aide !
+## Astuces
+- Vous pouvez utiliser l'autocompletion pour les articles
+- Reportez-vous à la documentation dans le dossier Help
+
+```
+gsl www add mona
+```
+
+
+# Help
------------------------------------------------------------------------
-Reportez vous aux explications dans le dossier *help*
-
-
-# HELP COMMAND
-------------------------------------------------------------------------
-```
-$ gsl [ARG]
+$ 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
- template | -t : Tips to create your template
+ help | -h (OPT) : This Help and how to
+ install | -i : Show process installation
+ authors | -a : Add/Remove authors for this DOMAIN
+ setdir | -d : Set a directory for article's DOMAIN
+ write | -w : Write a Post
+ tpl | -T : Create your template
+ param | -p : Configure some parameters
+ css : Show used CSS classes
+ tips | -t : Show tips and advises you should know
- new | -N : Add and configure a new DOMAIN
-
- log | -L [OPTS] : Show logs from all sessions
+ new | -N : Generic OPT to add/create
+ domain : Configure your DOMAIN
+ author : Same as gsl author edit
+ (TYPE) (NAME) : Create an article with (TYPE) named (NAME).gsl
+
+ setdir | -D : Show current directory DOMAIN or set it
+
+ log | -L (OPTS) : Show logs from all sessions
clean | -C : Logs saved to {DATE}.gsl.log and cleaned
+ all : clean all saved logs, keep current
-i | -w | -e : from levels (infos, warnings, errors)
-s : from last session only
- [TERM] : [TERM] : case insensitive, regex 'T1.*T2'
+ (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
+ author | -A : List authors from DOMAIN in PWD folder
+ edit : Add/Remove ! ONE author per line
- create [TYPE] [NAME] : Create an article with [TYPE] named [NAME].gsl
-
- edit | -E : Open in default EDITOR [FILE] or with nano
+ edit | -E : Open in default EDITOR (FILE) or with nano
conf : Domain configuration file
- [FILE] : [FILE] (.gsl)
+ author : Same as gsl author edit
+ domain : Domains registred database
+ (FILE) : (FILE) ; .gsl
- db [FILE] : Show DB statuses from [FILE]
+ db (FILE) : Show DB statuses from (FILE)
- sync [OPT] : Sync Templates to www and wip
+ 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
+ check | -C (OPTIONS) : Check Post(s) errors from PWD folder
+ -N : Check only articles not in DB
+ -F : Force Check again ; Recreate in Database
+ (FILE) : Only this (FILE)
- make | -M [OPT] [FILE] : Convert Posts from PWD folder or [FILE]
- to HTML file in server
+ make | -M (OPTIONS) : Make all HTML articles or only (FILE)
-F : Force Make again
+ (FILE) : Only this (FILE)
- 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]:
+ www (OPT1) (OPT2) : Add/Remove Post(s) in www server
+ (OPT1):
+ sync : Same as "sync www"
+ 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)
+ (FILE) : Select specific post (if wip status)
+ wip : Same as www for wip
- 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
+ sidebar | -S : Show Posts in list (ARG) (POS) (FILE)
+ (ARG):
+ add | -a : Put article at (POS). Remove last, roll from (POS)
+ replace | -r : Replace (POS) with article
+ latest | -l : Create sidebar with latest (remove all existing)
-v : Show local versionn
--version : Like -v + changes
-vv : Shown local and repo Versions
-```
+
diff --git a/control b/control
index 373af2e..c854da8 100644
--- a/control
+++ b/control
@@ -1,10 +1,10 @@
Package: egsl
-Version: 0.0.37
+Version: 0.0.9
Section: custom
Priority: optional
Architecture: all
Essential: no
-Depends: curl,rsync
+Depends: curl,rsync,nano
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: echolib
Description: Echolib's GSL is a multiple blogs/websites generator based on their domain, written in bash, for minimal dependancies. The websites are nearly all static, except for some includes pages, like listing posts, that nginx can easily get, in your webserver.
diff --git a/etc/gsl/gsl.conf b/etc/gsl/gsl.conf
index 4594716..24e435a 100644
--- a/etc/gsl/gsl.conf
+++ b/etc/gsl/gsl.conf
@@ -3,105 +3,121 @@
# By echolib
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
+#=======================================================================
+# Set GSL Internal Configuration
+#=======================================================================
+# minimum size to check a post (default: 180)
+gsl_article_min_Size=180
-#=======================================================================
-# Folders
-#=======================================================================
+# Show log by time|level (default: 'time'); not set = level
+gsl_log_order=time
+
+#----------------------------------------------------------------------
+# # Directories Structure
+#----------------------------------------------------------------------
+# Main
app_name="gsl"
-
-# Librairies
gsl_dir_lib="/var/lib/gsl"
gsl_dir_scripts="$gsl_dir_lib/scripts"
-gsl_dir_helps="$gsl_dir_lib/helps"
-
-# Management
-gsl_dir_db="$gsl_dir_lib/db"
-gsl_dir_global_domains="/var/lib/gsl/domains"
-
-# Logs
+gsl_dir_help="$gsl_dir_lib/help"
gsl_dir_logs="/var/log/gsl"
-# User
-gsl_dir_user_domains="/home/$USER/.config/gsl/domains"
+gsl_dir_domains="$gsl_dir_lib/domains"
+gsl_dir_db="$gsl_dir_lib/db"
+
+#======================================================================
+# iNSTALLATION DEPENDANCIES
+#======================================================================
+gsl_dirs=(
+$gsl_dir_lib
+$gsl_dir_scripts
+$gsl_dir_domains
+$gsl_dir_db
+$gsl_dir_logs
+$gsl_dir_help
+)
+
+gsl_files_scripts=(
+$gsl_dir_scripts/gsl__db_manager
+$gsl_dir_scripts/gsl__do_commons
+$gsl_dir_scripts/gsl__domain_manager
+$gsl_dir_scripts/gsl__edit_file
+$gsl_dir_scripts/gsl__HTML_template
+$gsl_dir_scripts/gsl__log_manager
+$gsl_dir_scripts/gsl__post_checkers
+$gsl_dir_scripts/gsl__post_makers
+$gsl_dir_scripts/gsl__post_manager
+$gsl_dir_scripts/gsl__srv_manager
+$gsl_dir_scripts/gsl__stats
+$gsl_dir_scripts/gsl__version
+)
+
+gsl_files_help=(
+$gsl_dir_help/comment_ecrire-article.md
+$gsl_dir_help/gsl_help.md
+$gsl_dir_help/comment_installer-GSL.md
+$gsl_dir_help/template-comment-creer.md
+$gsl_dir_help/how_to-set_directory_for_articles.md
+$gsl_dir_help/how_to-add_remove_authors.md
+$gsl_dir_help/how_to-parameters_conf.md
+$gsl_dir_help/how_to-CSS_classes.md
+$gsl_dir_help/how_to-Tips_Advises.md
+)
+
+gsl_dirs_w=(
+$gsl_dir_domains
+$gsl_dir_db
+$gsl_dir_logs
+)
#=======================================================================
# Files
#=======================================================================
-# Logs
+gsl_file_db_domains="$gsl_dir_db/domains.db"
gsl_file_logs="$gsl_dir_logs/gsl.log"
-# Management
-gsl_file_db_domains="$gsl_dir_db/domains.db"
-gsl_file_db_posts="$gsl_dir_db/posts.db"
-gsl_file_db_files="$gsl_dir_db/files.db"
+# colors
+NC="\e[0m"
+CY="\e[33m"
+CR="\e[0;91m"
-# Registred Authors filename
-gsl_filename_auth="authors.db"
-
-#=======================================================================
-# GSL Internal Configuration
-#=======================================================================
-# minimum size to check a post
-gsl_post_min_size=150
-
-# Max Posts list in sidebar
-gsl_list_max_posts=5
-
-# Init log datas
-gsl_log_e='Err'
-gsl_log_w='War'
+#----------------------------------------------------------------------
+# LOGS settings
+#----------------------------------------------------------------------
+gsl_log_e="Err"
+gsl_log_w="War"
gsl_log_i='Inf'
-
-#-----------------------------------------------------------------------
-# Set LOG help Activity for NEEDED HEADERS
-#-----------------------------------------------------------------------
-gsl_log_act_title='POST TITLE'
+gsl_log_act_type="'page' or 'post'"
+gsl_log_act_title='ARTICLE TITLE'
gsl_log_act_author='REGISTRED NAME'
-gsl_log_act_info='POST is ABOUT...'
-gsl_log_act_slug='POST-TITLE'
-gsl_log_act_code='NBR : FILENAME : Alt Text'
-gsl_log_act_image='NBR : NAME : ALT TEXT'
+gsl_log_act_info='it is about...'
+gsl_log_act_slug='THIS-SLUG'
+gsl_log_act_fcode='NBR : FILENAME : Alt Text'
+gsl_log_act_fbrut='NBR : FILENAME'
+gsl_log_act_flink='NAME : FILENAME : Alt Text'
+gsl_log_act_image='NBR : FILENAME : ALT TEXT'
gsl_log_act_abbr='SHORT : LONG'
-gsl_log_act_h1='#1 POST CONTENT TITLE'
-gsl_log_act_link='NAME : URL : Alt Text'
-gsl_log_act_file='NAME : FILENAME : Alt Text'
+gsl_log_act_link='NAME : URL : Alt-Text'
-#-----------------------------------------------------------------------
-# Set LOG for Process Type
-#-----------------------------------------------------------------------
-gsl_log_h_link="Header Link"
-gsl_log_h_abbr="Header ABBR"
-gsl_log_h_code="Header Code"
-gsl_log_h_image="Header Image"
-gsl_log_h_file="Header File"
-gsl_log_h_image="Header Image"
-
-gsl_log_c_h1="Content Begins"
-gsl_log_c_p="Content Paragraphs"
-gsl_log_c_cite="Content Citations"
-gsl_log_c_link="Content Link"
-gsl_log_c_abbr="Content ABBR"
-gsl_log_c_code="Content Code"
-gsl_log_c_image="Content Image"
-gsl_log_c_file="Content File"
-
-#-----------------------------------------------------------------------
-# Set CONTENT POST markers
-#-----------------------------------------------------------------------
-gsl_mo_p='('
-gsl_mc_p=')'
-gsl_mark_file='__'
+#----------------------------------------------------------------------
+# CONTENT Article markers
+#----------------------------------------------------------------------
+gsl_mark_p_start='('
+gsl_mark_p_close=')'
+gsl_mark_flink='__'
gsl_mark_image='_image'
gsl_mark_fcode='_code'
+gsl_mark_fbrut='_brut'
gsl_mark_title='#'
-gsl_mark_bold='\*'
-gsl_mark_strong='\*\*'
-gsl_mark_italic='\/'
-gsl_mark_code="¤"
+gsl_mark_bold='·'
+gsl_mark_strong='•'
+gsl_mark_em='”'
+gsl_mark_icode="¤"
gsl_mark_list='='
gsl_mark_listo="+"
-
-
+gsl_mark_newline="|"
+gsl_mark_strike="×"
+gsl_mark_link='_'
gsl_mark_blockquote='---'
gsl_mark_blockquote_cite='_cite :'
gsl_mark_blockquote_year='_year :'
@@ -109,27 +125,35 @@ gsl_mark_blockquote_link='_link :'
gsl_mark_blockquote_book='_book :'
gsl_mark_blockquote_lang='_lang :'
-#-----------------------------------------------------------------------
-# Set HEADERS markers
-#-----------------------------------------------------------------------
-# type: page / post
-gsl_marker_type='type: '
-gsl_marker_title='title: '
-gsl_marker_slug='slug: '
-gsl_marker_info='info: '
-gsl_marker_author='author: '
-gsl_marker_date='date: '
-gsl_marker_tags='tags: '
+#----------------------------------------------------------------------
+# HEADERS markers
+#----------------------------------------------------------------------
+# Needed HEADER markers
+gsl_marker_type='type:'
+gsl_marker_title='title:'
+gsl_marker_slug='slug:'
+gsl_marker_info='info:'
+gsl_marker_author='author:'
+gsl_marker_date='date:'
+gsl_marker_tags='tags:'
-#Optional (include brut text)
-gsl_marker_code='code: '
-gsl_marker_image='image: '
-gsl_marker_abbr='abbr: '
-gsl_marker_link='link: '
-gsl_marker_file='file: '
+# Optional HEADER markers
+gsl_marker_css='css:'
+gsl_marker_fcode='code:'
+gsl_marker_fbrut='brut:'
+gsl_marker_image='image:'
+gsl_marker_abbr='abbr:'
+gsl_marker_link='link:'
+gsl_marker_flink='file:'
-# Delimiters to seet for sed in case exists in inline-code
-gsl_d=(\, \. \? \% \# \- \: \^ \/ \_ \| )
+# Closed HTML static code
+HTML_strike_close=''
+HTML_icode_close=''
+HTML_em_close='"'
+HTML_strong_close=''
+HTML_bold_close=''
+HTML_br=' '
+HTML_p_close=''
# Onlinde Repo
repo="https://git.a-lec.org/echolib/gsl/-/raw/main/usr/local/bin/gsl"
diff --git a/help/article-comment-ecrire.md b/help/article-comment-ecrire.md
deleted file mode 100644
index adf7c5e..0000000
--- a/help/article-comment-ecrire.md
+++ /dev/null
@@ -1,310 +0,0 @@
-# Créer un fichier depuis la ligne de commande
-------------------------------------------------------------------------
-
-Vous pouvez créer un fichier daté du jour avec les METAS obligatoires
-intégrés (à renseigner après). Vous devez spécifier si votre article
-sera une page ou un post (Voir section plus bas) et lui donner un nom.
-
-Rendez vous dans le dossier de vos articles, enregistrés lors de l'ajout
-de votre domaine (ou celui que vous avez configuré).
-
-Évitez les espaces dans le nom du fichier ou utilisez des guillemets.
-
-```
-# Crréer une page nommée index
-gsl create page index
-
-# Créer un article nommé mes-vacances
-gsl create post mes-vacances
-```
-
-Vous pouvez l'éditer dans le terminal ou avec votre éditeur de texte.
-
-```
-gsl edit mes-vacances.gsl
-```
-
-# 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 HTML selon le slug: /POST-TITLE.html
-type: page
-
-# Article (monarticle)
-# Création HTML 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 *et leur contenu* (ex: ```= list 1...```, ```*__monfichier...```)
-**doivent commencer et finir sur la même ligne**.
-
-### Abréviations
-Définir en METAS...
-
-```
-abbr: CSS : Cascading Style Sheets
-```
-
-Dans l'article:
-
-```
-Les propriétés CSS ne sont pas définies
-```
-
-### 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
-link: https://a-lec.org/ : URL : Alt text
-```
-
-Dans l'article..
-- Écrivez ```_``` devant le nom du lien
-- Ajoutez ```+``` pour ouvrir le lien dans un nouvel onglet
-
-```
-Visitez _Mon lien+ et charger ici la page _https://a-lec.org/
-```
-
-### 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 (ul)
-- utilisez ```+``` pour définir une liste ordonnée (ol)
-
-```
-(
-Voici une liste simple
-= 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
-)
-
-```
diff --git a/help/comment-parametrer-GSL.md b/help/comment-parametrer-GSL.md
new file mode 100644
index 0000000..8a43cb8
--- /dev/null
+++ b/help/comment-parametrer-GSL.md
@@ -0,0 +1,16 @@
+# Configurations optionnelles de GSL
+
+Vous pouvez configurer quelques paramètres dans le fichier
+**/etc/gsl/gsl.conf**
+
+## Afficher les logs par chronologie
+```
+# Show log by time|level (default: 'time'); not set = level
+gsl_log_order=time
+```
+
+## Définir la taille en octets minimum d'un fichier
+```
+# Par défaut: 180
+gsl_article_min_Size=250
+```
diff --git a/help/comment_ecrire-article.md b/help/comment_ecrire-article.md
new file mode 100644
index 0000000..b3aed6a
--- /dev/null
+++ b/help/comment_ecrire-article.md
@@ -0,0 +1,363 @@
+# Créer un article depuis la ligne de commande
+------------------------------------------------------------------------
+Vous pouvez créer un article daté du jour avec les METAS obligatoires
+intégrées (à renseigner après) depuis la ligne de commande. Vous devez
+spécifier si votre article sera une page ou un post (Voir section plus
+bas), et lui donner un nom. Les metas optionnelles sont ajoutées enn
+commentaires.
+
+Rendez vous dans le dossier de vos articles, enregistrés lors de l'ajout
+de votre domaine (ou celui que vous avez configuré).
+
+Mettez des guillemets pour les nom du fichier avec espaces.
+
+```
+# Crréer une page nommée index (deviendra /index.html)
+gsl new page index
+
+# Créer un article nommé "mes vacances"
+gsl ew post "mes vacances"
+```
+
+Vous pouvez l'éditer dans le terminal ou avec votre éditeur de texte, en
+utilisant l'autocompletion ()
+
+```
+gsl edit "mes vacances.gsl"
+```
+
+
+# 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```)
+**Écrire sur une seule ligne** chaque META
+
+```
+type: page
+title: POST TITLE
+slug: MY-SLUG (si espaces, GSL les convertira en -)
+info: DESCRIPTION (À propos de cet article)
+author: NAME (doit être enregistré via la commande: gsl author edit
+date: YYYY-MM-DD
+tags: TAG1,Mon TAG2,TAG3 (séparé par une virgule)
+```
+
+### Page ou Article ?
+Vous devez spécifier pour chaque article si c'est une **page** ou un
+**post**
+
+#### Page (index, 404, about...)
+Création HTML à la racine selon le slug: /MY-SLUG.html
+
+```
+type: page
+slug: 404
+```
+
+#### Post (monarticle)
+Création HTML dans un dossier selon le slug: /MY-SLUG/index.html
+**! Le slug ne doit pas commencer par un /**
+
+```
+type: post
+slug: service/xmpp/configurer-gajim
+```
+
+## METAS optionnelles (avant ```#1```)
+Définir UN seul marqueur CSS par article pour personnaliser chaque
+article avec sa propre CSS.
+
+```
+css: myID
+```
+
+Définir un ou plusieurs de ces marqueurs 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
+brut: NUMERO : NOM-DU-FICHIER
+image: NUMERO : NOM-DU-FICHIER : TEXT-ALTERNATIF
+```
+
+## Contenu de l'article:
+Les marqueurs (hors listes) *et leur contenu* (ex: ```__monfichier...```)
+**doivent être sur la même ligne**.
+
+Les marqueurs à retenir et leur Combinaison de touches sur un clavier
+azerty français
+
+- Très gras: '•...•' (alt+gr + ;)
+- Gras: '·...·' (alt+gr + :)
+- Italique: '”...”' (alt+gr + n)
+- Barré: '×...×' (alt+gr + shift + ;)
+- Code: '¤...¤' (alt+gr + $)
+
+### Écrire en très gras
+Dans l'article...
+
+```
+•c'est en super gras (strong)•
+c'est in•défini•ssable
+il ad•juge• : pas de pub !
+```
+
+### Écrire en gras
+Dans l'article...
+
+```
+·Tout est en gras·
+```
+
+### Écrire en Italique
+Dans l'article...
+
+```
+C'est ”en italique”
+```
+
+### Créer un texte "barré"
+Dans l'article...
+
+```
+La réunion aura lieu ×demain× dans une semaine
+```
+
+### Écrire un Code en ligne
+Dans l'article...
+
+```
+¤gsl help -w && echo "Be Happy"¤
+```
+
+### Abréviations
+Définir en METAS... (SHORT doit être en **lettres CAPITALES**)
+
+```
+abbr: CSS : Cascading Style Sheets
+```
+
+Dans l'article:
+
+```
+Les propriétés CSS ne sont pas définies
+```
+
+### Paragraphes
+Au début d'une nouvelle ligne, ouvrez avec ( et fermez avec ).
+Vous pouvez définir le nom de la classe du paragraphe en ajoutant la
+valeur désirée ; par exemple : p3
+
+Dans l'article...
+```
+( p3
+Paragraphe avec une classe p3 en css
+)
+
+(
+Paragraphe sans classe
+)
+```
+
+### Liens
+Définir en METAS
+
+```
+link: Mon lien : URL : Alt text
+link: https://a-lec.org/ : URL : Alt text
+```
+
+Dans l'article..
+- Écrivez ```_``` devant le nom du lien
+- Ajoutez ```+``` pour ouvrir le lien dans un nouvel onglet
+
+```
+Visitez _Mon lien+ et charger ici la page _https://a-lec.org/
+```
+
+### 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 ```:```. ```+``` indique l'ouverture dans une
+nouvelle fenêtre. Seuls le "numéro d'image" est obligatoire
+
+- Numero d'image
+- Alignement: l,r,(g,d également),c pour gauche, droite, centre)
+- - maclasse au lieu de l,r,c pour utiliser la classe css "maclasse"
+- - + (class="center")
+- Longueur width: (avec unité)
+- - + (taille originale)
+- Largeur height: (avec unité)
+- - + (longueur définie, largeur originale)
+- 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:640px:25%
+_image:3:maclass:320px:240px:+
+)
+```
+
+Exemple d'images affichées l'une en dessous de l'autre, dont la première
+s'ouvrir dans un nouvel onglet avec sa taille originale et la classe css
+center
+
+```
+(
+_image:1:+
+)
+(
+_image:2:c:1920px:25%
+)
+```
+
+### Block-Code depuis un fichier
+Définir en METAS
+
+```
+code: python : FILENAME : Alt Text
+```
+
+Dans l'article...
+```
+_code:python
+```
+
+### IMPORT de code brut (sera exécuté par le navigateur)
+Définir en METAS
+
+```
+brut : 1 : FILENAME
+```
+
+Dans l'article...
+```
+_brut:1
+```
+
+### Citation simple
+Définissez un bloc pour la citation. Utilisez ```---```
+Vous pouvez définir une classe CSS spécifique ```--- ma-classe-css```
+
+Dans l'article...
+
+```
+---
+(
+Une citation simple dans un paragraphe
+)
+---
+```
+
+### Citation avancée
+Dans l'article... Stallman est une classe CSS
+```
+--- Stallman
+_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 : données optionnelles
+Ajoutez ces marqueurs, si connus dans la citation
+
+```
+_year: 2021
+_book: Esperanza 64
+```
+
+
+### Créer des listes
+L'arborescence est "infinie".
+- Définir le début d'une liste par ```<<``` et sa fin par ```>>```
+- Définir une classe CSS après ```<< ```
+
+Dans l'article...
+- utilisez ```=``` pour définir une liste simple (ul)
+- utilisez ```+``` pour définir une liste ordonnée (ol)
+- Mixez les 2 (dans la limite de ma patience :D)
+
+```
+(
+Voici une liste simple
+<<
+= Fruits : *mangez-en*
+== Kiwis
+== Fraises
+=== pas mûres
+== Bananes
+=== Plantins
+= Légumes
+== Haricots
+=== Rouges
+=== Verts
+>>
+)
+
+Voici une liste mixe avec sa classe "couverture"
+<< couverture
+= Livre 1
++ Chapitre 1
++ Chaptire 2
+++ Résumé du Ch 2
+= Livre 2
++ Chapitre 1
+>>
+```
+
+### 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**. Pratique dans les
+paragraphes.
+
+Dans l'article...
+
+```
+#1 Mon titre
+(
+Ceci est un long paragraphe (Un peu d'imagination...)
+|
+Retour "forcé" à la ligne
+)
+```
diff --git a/help/comment_installer-GSL.md b/help/comment_installer-GSL.md
new file mode 100644
index 0000000..ff0a0f5
--- /dev/null
+++ b/help/comment_installer-GSL.md
@@ -0,0 +1,84 @@
+# Comment installer GSL: Statique Littératueur
+------------------------------------------------------------------------
+
+- Un script d'installation install.sh est prévu, mais pas encore proposé.
+- Un .deb peut être créé (merci neox) depuis le make de l'archive
+
+## Installation manuelle
+- git clone https://git.a-lec.org/echolib/gsl && cd gsl
+- Commencez par créer les dossiers de base (voir ci-dessous)
+- Donnez leur les droits nécessaires
+
+GSL n'utilise pas de droits sudo, et a besoin pour écrire certains
+fichiers et créer certains dossiers d'être propriétaire ou d'avoir les
+droits en écriture des dossiers
+
+```
+# Pour le dossier du binaire
+sudo rsync -a usr/local/bin/gsl /usr/local/bin/gsl
+sudo chown USER:GROUP/usr/local/bin/gsl
+
+# Pour les dossiers de scripts
+sudo mkdir -p "/var/lib/gsl"
+sudo chown -R USER:GROUP "/var/lib/gsl"
+rsync -a var/lib/gsl/ /var/lib/gsl/
+
+# Pour le dossier de logs
+sudo mkdir -p "/var/log/gsl"
+sudo chown -R USER:GROUP "/var/log/gsl"
+
+# Pour le dossier de configuration
+sudo mkdir -p /etc/gsl
+sudo chown -R USER:GROUP "/etc/gsl"
+
+# Pour l'autocompletion des articles dans la commande
+sudo rsync -a usr/share/bash-completion/completions/gsl /usr/share/bash-completion/completions/gsl
+sudo chown USER:GROUP "/usr/share/bash-completion/completions/gsl"
+```
+
+Attention: GSL aura besoin de créer des sous-dossier dans le serveur,
+renseigné dans le questionnaire. (i.e. /var/www/). Il faut donc lui
+donner les droits
+
+# Arborescence des dossiers utilisés par GSL
+------------------------------------------------------------------------
+Note: ```+``` indique que GSL créera ces dossiers
+
+- /etc/gsl
+- /var/log/gsl
+- /var/lib/gsl
+- - /help/
+- - /scripts/
+- - /domains
+- - - /DOMAIN
+- - - - /templates/ +
+- - - - /files/ +
+- - - - /images/ +
+- - - - /X-tra +
+- - - - - /sidebar +
+- - /db
+- - - /DOMAIN +
+
+- /SRV (i.e. /var/www)
+- - /DOMAIN
+- - - /wip
+- - - - /TEMPLATE (sync wip (command) from /var/lib/gsl/domains/DOMAIN/)
+- - - /www
+- - - - /TEMPLATE (sync www (command) from /var/lib/gsl/domains/DOMAIN/)
+
+
+# Fichiers créés par GSL
+------------------------------------------------------------------------
+
+- /var/log/gsl
+- - gsl.log
+- - Y-M-D-H-M-S.gsl.log (backup when clean ; removed with clean all)
+- /var/lib/gsl
+- - /domains
+- - - DOMAIN
+- - - - authors.db
+- - - - DOMAIN.conf
+- - /db/
+- - - domains.db (registred domains)
+- - - DOMAIN/
+- - - - (file).gsl.db (Un par article)
diff --git a/help/gsl_help.md b/help/gsl_help.md
new file mode 100644
index 0000000..73aef23
--- /dev/null
+++ b/help/gsl_help.md
@@ -0,0 +1,74 @@
+# GSL: Statique Littérateur
+
+$ gsl (ARG)
+ readme : Show README.md instructions
+ help | -h (OPT) : This Help and how to
+ install | -i : Show process installation
+ authors | -a : Add/Remove authors for this DOMAIN
+ setdir | -d : Set a directory for article's DOMAIN
+ write | -w : Write a Post
+ tpl | -T : Create your template
+ param | -p : Configure some parameters
+ css : Show used CSS classes
+ tips | -t : Show tips and advises you should know
+
+ new | -N : Generic OPT to add/create
+ domain : Configure your DOMAIN
+ author : Same as gsl author edit
+ (TYPE) (NAME) : Create an article with (TYPE) named (NAME).gsl
+
+ setdir | -D : Show current directory DOMAIN or set it
+
+ log | -L (OPTS) : Show logs from all sessions
+ clean | -C : Logs saved to {DATE}.gsl.log and cleaned
+ all : clean all saved logs, keep current
+ -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 : List authors from DOMAIN in PWD folder
+ edit : Add/Remove ! ONE author per line
+
+ edit | -E : Open in default EDITOR (FILE) or with nano
+ conf : Domain configuration file
+ author : Same as gsl author edit
+ domain : Domains registred database
+ (FILE) : (FILE) ; .gsl
+
+ 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 (OPTIONS) : Check Post(s) errors from PWD folder
+ -N : Check only articles not in DB
+ -F : Force Check again ; Recreate in Database
+ (FILE) : Only this (FILE)
+
+ make | -M (OPTIONS) : Make all HTML articles or only (FILE)
+ -F : Force Make again
+ (FILE) : Only this (FILE)
+
+ www (OPT1) (OPT2) : Add/Remove Post(s) in www server
+ (OPT1):
+ sync : Same as "sync www"
+ 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)
+
+ wip : Same as www for wip
+
+ sidebar | -S : Show Posts in list (ARG) (POS) (FILE)
+ (ARG):
+ add | -a : Put article at (POS). Remove last, roll from (POS)
+ replace | -r : Replace (POS) with article
+ latest | -l : Create sidebar with latest (remove all existing)
+
+ -v : Show local versionn
+ --version : Like -v + changes
+ -vv : Shown local and repo Versions
diff --git a/help/how_to-CSS_classes.md b/help/how_to-CSS_classes.md
new file mode 100644
index 0000000..c7048ca
--- /dev/null
+++ b/help/how_to-CSS_classes.md
@@ -0,0 +1,95 @@
+# CSS Classes and IDs
+```xxx``` is your choosen CSS acronym for your DOMAIN
+Note: if "myclass" or "myID" is not defined, class or ID is not used
+
+## Legacy HTML
+### body
+myID is set in article with css: myID
+TYPE is set in article with type: page|post
+- body: xxx_TYPE myID
+
+## Article Content
+### Metas (author, date...)
+
+### Titles h1-h6
+X is 1 to 6
+- xxx_title xxx_title-X
+
+### div between titles
+X is 1 to 6 from current title
+- xxx_content_hX
+
+### Between markers (code, emphasis, strong...)
+- bold: xxx_bold
+- strong: xxx_strong
+- emphasis: xxx_em
+- strike: xxx_strike
+- inline code: xxx_icode
+
+### Paragraphs
+myclass is the content value used (i.e.```( myclass```)
+- xxx_p myclass
+
+### Links
+- xxx_link
+- xxx_link xxx_link-window (if "+" for target)
+
+### Links from file
+- xxx_link-file
+- xxx_link-file xxx_link-file-window (if "+" for target)
+
+### Image and image link
+myclass is from content marker (i.e. _image:1:myclass:90:90:+)
+- link: xxx_image-link myclass
+- img: xxx_image xxx_image-(left,right,cente)
+- - If myclass replace xxx_image-(left...) by myclass
+
+### pre-codes from source file
+X is the NAME/NBR registred in header
+- pre: xxx_code-block xxx_code-block-X
+- span line: xxx_code-line
+- span content: xxx_code-content
+- p after pre: xxx_code-p
+- link source: xxx_code-link
+
+### Liste (ol | ul | li)
+X is the item mark nbr (i.e. "+++" = 3, "=" = 1)
+myclass is the registred value after << (i.e. << myclass). Only used at
+the begining bloc.
+- ol: xxx_list xxx_list-ol xxx_myclass xxx_myclass-ol
+- ul: xxx_list xxx_list-ul xxx_myclass xxx_myclass-ul
+- li: a-lec_li a-lec_li-X
+
+### Quotes
+myclass is the registred value after "---" (i.e. --- myclass)
+myclass is used on
+- ```