Checkers, new tag meta, fix processes...

This commit is contained in:
Cyrille L 2022-02-16 14:11:41 +01:00
parent d552f298fd
commit 393b32485c
11 changed files with 604 additions and 216 deletions

100
README.md
View File

@ -1,4 +1,5 @@
# GSL: Statique Littérateur
===
GSL is a multiple blogs/websites generator based on their domain,
written in bash, for minimal dependancies. The websites are nearly all
@ -6,12 +7,14 @@ static, except for some includes that nginx can easily get, in your
webserver.
# Dependancies
===
- bash
- coreutils
- curl (to check Posts links response)
# GSL: Installation
===
To avoid sudo, you should give permissions to USER
@ -42,6 +45,8 @@ To avoid sudo, you should give permissions to USER
# How to configure a DOMAIN folder, and create a Post
===
## Set a DOMAIN
- add a DOMAIN name (if not alrady done)
```
@ -74,6 +79,101 @@ files and folders. You could install lightweight darkhttpd webserver on
your PC to preview the website
# Create a Templates
===
You will have to create some CSS in your /DOMAIN/templates/
- HOME: ~/.config/gsl/domains/DOMAIN/templates/
- GLOBAL: /var/lib/gsl/domains/DOMAIN/templates/
# How to Write a Post
===
Post has 2 sections : Vefore and after #1. #1 is the FIRST Title of your
post. #(1-6) are HTML titles (<h1> to <h6>).
- Before #1 is used to set METAs HEADERS to configure your Post.
- After #1 is the CONTENT of your Post
## NEEDED HEADERS (before #1)
Register METAs for HTML Page content
```
title: POST TITLE
slug: POST-TITLE (if space in slug GSL will convert them)
info: DESCRIPTION (about the Post)
author: NAME (must be registred with $ gsl author add)
date: YYYY-MM-DD
tags: TAG1,OTHER TAG2,TAG3 (comma separated)
```
## Optional HEADERS (before #1)
Register METAs for CONTENT. " : " field separator
```
abbr: SHORT : LONG
file: NAME : FILENAME : ALT-TEXT
link: NAME : URL : ALT-TEXT
code: NBR : FILENAME
image: NBR : FILENAME : ALT-TEXT
```
## CONTENT Post:
In Content Post, markers (i.e. [_,_],*_,_*...) must be on the SAME line.
For ABBRs, just write SHORT in your content
```
# Paragraphs
At begining of new line, open with ( and close with )
(
This is a paragraph
)
# Register in Header. link: My Great link : URL : ALT-TEXT
[_My Great Link_]
# Write in ITALIC
/_this em text_/
# Write in STRONG
**_this strong content_**
# BOLD
*_this bold content_*
# Register in Header. file: My Great file : FILENAME : ALT-TEXT
<_My Great file_>
# Inline-code (¤ = alt-gr + $ on FR keyboard)
¤_push()_¤
# Lists
=> list 1
==> sublist 1
===> sub-sublist 1
=> list 2
# Simple Blockquote
---
(
A simple great quote
)
---
# Advanced Blockquote
---
_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
)
---
# Register in Header. image: 1 : FILENAME : ALT-TEXT
_image_ : 1
# Block-Code File: Register in Header. code: 1 : FILENAME
_code_ : 1
```

View File

@ -57,7 +57,9 @@ gsl_admin_sep_post='==============='
# Date format
gsl_test_date='^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]+$'
# Logs
#-----------------------------------------------------------------------
# Set LOG help Activity for NEEDED HEADERS
#-----------------------------------------------------------------------
gsl_log_act_title='POST TITLE'
gsl_log_act_author='REGISTRED NAME'
gsl_log_act_date='YYYY-MM-DD'
@ -71,7 +73,16 @@ gsl_log_act_link='NAME : URL : ALT TEXT'
gsl_log_act_file='NAME : FILENAME : ALT TEXT'
#-----------------------------------------------------------------------
# Set CONTENT POTST markers
# Set LOG for CONTENT Process
#-----------------------------------------------------------------------
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_mo_link='\[_'
@ -104,6 +115,9 @@ gsl_mark_blockquote_link='_link :'
gsl_mark_blockquote_book='_book :'
gsl_mark_blockquote_lang='_lang :'
#-----------------------------------------------------------------------
# Set for Stats
#-----------------------------------------------------------------------
gsl_o_markers=(
$gsl_mo_link
$gsl_mo_em
@ -123,12 +137,12 @@ $gsl_mc_file
)
gsl_i_markers=(
Link
Italic
Strong
Bold
Code
File
"Content link"
"Content italic"
"Content strong"
"Content bold"
"Content code"
"Content file"
)
gsl_u_markers=(
@ -143,16 +157,17 @@ gsl_u_markers=(
#-----------------------------------------------------------------------
# Set HEADERS markers
#-----------------------------------------------------------------------
gsl_marker_ID=';; ID: '
gsl_marker_title=';; title: '
gsl_marker_slug=';; slug: '
gsl_marker_info=';; info: '
gsl_marker_author=';; author: '
gsl_marker_date=';; date: '
gsl_marker_ID='ID: '
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: '
gsl_marker_code='code: '
gsl_marker_image='image: '
gsl_marker_abbr='abbr: '
gsl_marker_link='link: '
gsl_marker_file='file: '

View File

@ -23,10 +23,9 @@ gsl__create_ff
#=======================================================================
case "$1" in
author|-A)
gsl__find_domain && exit 1
gsl__find_domain
gsl__check_source "$gsl_dir_scripts/gsl__auth_manager" || exit 1
echo "# Domain: $gsl_find_domain"
case "$2" in
"")
gsl__authors_list
@ -86,7 +85,10 @@ case "$1" in
"New Website" \
"$gsl_dir_scripts/gsl__new_website"
gsl author add
[[ -f "$gsl_file_db_domains" ]] && \
[[ -d "$gsl_dir_user_posts" ]] \
&& cd "$gsl_dir_user_posts" \
&& gsl author add
;;
log|-L)
@ -121,12 +123,12 @@ case "$1" in
;;
check|-C)
gsl__find_domain || exit 1
gsl__find_domain # || exit 1
gsl__check_source "$gsl_dir_scripts/gsl__auth_manager" || exit 1
gsl__authors_list check || exit 1
gsl__check_source "$gsl_dir_scripts/gsl__post_manager" || exit 1
gsl__check_source "$gsl_dir_scripts/gsl__post_checkers" || exit 1
gsl__check_nbr_posts || exit 1
gsl__check_nbr_posts
gsl__check_source "$gsl_dir_scripts/gsl__db_manager" || exit 1
case "$2" in
@ -182,6 +184,10 @@ case "$1" in
gsl__check_file "$gsl_dir_helps/gsl_help_install" || exit 1
cat "$gsl_dir_helps/gsl_help_install"
;;
write|-w)
gsl__check_file "$gsl_dir_helps/gsl_help_write_post" || exit 1
cat "$gsl_dir_helps/gsl_help_write_post"
;;
esac
;;
esac

View File

@ -1,4 +1,5 @@
# GSL: Statique Littérateur
===
GSL is a multiple blogs/websites generator based on their domain,
written in bash, for minimal dependancies. The websites are nearly all
@ -6,12 +7,14 @@ static, except for some includes that nginx can easily get, in your
webserver.
# Dependancies
===
- bash
- coreutils
- curl (to check Posts links response)
# GSL: Installation
===
To avoid sudo, you should give permissions to USER
@ -42,6 +45,8 @@ To avoid sudo, you should give permissions to USER
# How to configure a DOMAIN folder, and create a Post
===
## Set a DOMAIN
- add a DOMAIN name (if not alrady done)
```
@ -74,6 +79,101 @@ files and folders. You could install lightweight darkhttpd webserver on
your PC to preview the website
# Create a Templates
===
You will have to create some CSS in your /DOMAIN/templates/
- HOME: ~/.config/gsl/domains/DOMAIN/templates/
- GLOBAL: /var/lib/gsl/domains/DOMAIN/templates/
# How to Write a Post
===
Post has 2 sections : Vefore and after #1. #1 is the FIRST Title of your
post. #(1-6) are HTML titles (<h1> to <h6>).
- Before #1 is used to set METAs HEADERS to configure your Post.
- After #1 is the CONTENT of your Post
## NEEDED HEADERS (before #1)
Register METAs for HTML Page content
```
title: POST TITLE
slug: POST-TITLE (if space in slug GSL will convert them)
info: DESCRIPTION (about the Post)
author: NAME (must be registred with $ gsl author add)
date: YYYY-MM-DD
tags: TAG1,OTHER TAG2,TAG3 (comma separated)
```
## Optional HEADERS (before #1)
Register METAs for CONTENT. " : " field separator
```
abbr: SHORT : LONG
file: NAME : FILENAME : ALT-TEXT
link: NAME : URL : ALT-TEXT
code: NBR : FILENAME
image: NBR : FILENAME : ALT-TEXT
```
## CONTENT Post:
In Content Post, markers (i.e. [_,_],*_,_*...) must be on the SAME line.
For ABBRs, just write SHORT in your content
```
# Paragraphs
At begining of new line, open with ( and close with )
(
This is a paragraph
)
# Register in Header. link: My Great link : URL : ALT-TEXT
[_My Great Link_]
# Write in ITALIC
/_this em text_/
# Write in STRONG
**_this strong content_**
# BOLD
*_this bold content_*
# Register in Header. file: My Great file : FILENAME : ALT-TEXT
<_My Great file_>
# Inline-code (¤ = alt-gr + $ on FR keyboard)
¤_push()_¤
# Lists
=> list 1
==> sublist 1
===> sub-sublist 1
=> list 2
# Simple Blockquote
---
(
A simple great quote
)
---
# Advanced Blockquote
---
_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
)
---
# Register in Header. image: 1 : FILENAME : ALT-TEXT
_image_ : 1
# Block-Code File: Register in Header. code: 1 : FILENAME
_code_ : 1
```

View File

@ -4,6 +4,7 @@ $ gsl [ARG]
readme : Show README.md instructions
help | -h [OPT] : This Help. Add FULL [ARG] for specifics
install : Show process installation
write | -w : How to write a Post
new | -N : Add and configure a new DOMAIN

View File

@ -0,0 +1,93 @@
# How to Write a Post
Post has 2 sections : Vefore and after #1. #1 is the FIRST Title of your
post. #(1-6) are HTML titles (<h1> to <h6>).
- Before #1 is used to set METAs HEADERS to configure your Post.
- After #1 is the CONTENT of your Post
## NEEDED HEADERS (before #1)
Register METAs for HTML Page content
```
title: POST TITLE
slug: POST-TITLE (if space in slug GSL will convert them)
info: DESCRIPTION (about the Post)
author: NAME (must be registred with $ gsl author add)
date: YYYY-MM-DD
tags: TAG1,OTHER TAG2,TAG3 (comma separated)
```
## Optional HEADERS (before #1)
Register METAs for CONTENT. " : " field separator
```
abbr: SHORT : LONG
file: NAME : FILENAME : ALT-TEXT
link: NAME : URL : ALT-TEXT
code: NBR : FILENAME
image: NBR : FILENAME : ALT-TEXT
```
## CONTENT Post:
In Content Post, markers (i.e. [_,_],*_,_*...) must be on the SAME line.
For ABBRs, just write SHORT in your content
```
# Paragraphs
At begining of new line, open with ( and close with )
(
This is a paragraph
)
# Register in Header. link: My Great link : URL : ALT-TEXT
[_My Great Link_]
# Write in ITALIC
/_this em text_/
# Write in STRONG
**_this strong content_**
# BOLD
*_this bold content_*
# Register in Header. file: My Great file : FILENAME : ALT-TEXT
<_My Great file_>
# Inline-code (¤ = alt-gr + $ on FR keyboard)
¤_push()_¤
# Lists
=> list 1
==> sublist 1
===> sub-sublist 1
=> list 2
# Simple Blockquote
---
(
A simple great quote
)
---
# Advanced Blockquote
---
_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
)
---
# Register in Header. image: 1 : FILENAME : ALT-TEXT
_image_ : 1
# Block-Code File: Register in Header. code: 1 : FILENAME
_code_ : 1
```

View File

@ -11,8 +11,12 @@ gsl__authors_check() {
gsl_save_dir_ndd=`grep "$gsl_find_domain" "$gsl_file_db_domains"`
gsl_file_auth_ndd="$gsl_save_dir_ndd/$gsl_filename_auth"
[[ -f "$gsl_file_auth_ndd" ]] \
&& return
if [[ -f "$gsl_file_auth_ndd" ]];then
[[ -z `grep '[^[:space:]]' "$gsl_file_auth_ndd"` ]] \
&& echo "# Domain: $gsl_find_domain" \
&& echo "! No Registred authors yet..." \
&& return 1
fi
touch "$gsl_file_auth_ndd"
}
@ -21,19 +25,18 @@ touch "$gsl_file_auth_ndd"
# List Authors from DOMAIN
#=======================================================================
gsl__authors_list() {
gsl__authors_check
! [[ -z `grep '[^[:space:]]' "$gsl_file_auth_ndd"` ]] \
&& gsl_authors=true \
&& return
echo "! No Registred authors yet..."
case "$1" in
check)
[[ $gsl_authors ]] && return
gsl__authors_check || return
return
;;
add)
gsl__authors_check || return
;;
remove)
gsl__authors_check || return
;;
esac
echo -e "\n# Authors Registred:"
@ -47,8 +50,7 @@ done < <(cat -n "$gsl_file_auth_ndd")
# Add Author(s) for DOMAIN to authors.db in Profile User
#=======================================================================
gsl__authors_add() {
gsl__authors_check
gsl__authors_list
gsl__authors_list add
printf '\n%s\n%s\n%s\n \n' \
"# You can add one or more Authors" \
@ -77,8 +79,7 @@ gsl__authors_list
# Remove Author(s) for DOMAIN from authors.db in Profile User
#=======================================================================
gsl__authors_remove() {
gsl__authors_check
gsl__authors_list
gsl__authors_list remove || exit 1
printf '\n%s\n%s\n%s\n \n' \
"# You can REMOVE one or more Authors" \

View File

@ -23,34 +23,35 @@ printf '\n%s\n%s\n%s\n' \
#=======================================================================
# Webserver URI
#=======================================================================
echo -e "\n# Webserver: /var/www ! NO ending / (Or maybe elsewhere...)"
echo -e "\n# Webserver: /var/www (Or maybe elsewhere...)"
read -erp \
": Webserver URI ? " \
gsl_set_server
gsl__check_settings $gsl_set_server \
&& [[ "$gsl_process_stop" ]] \
&& return
[[ ${gsl_set_server: -1} == "/" ]] \
&& gsl_set_server=${gsl_set_server::-1}
gsl__check_settings $gsl_set_server || return
#=======================================================================
# Domain URL
#=======================================================================
printf '\n%s %s\n' \
"# URL: www.example.com !NO ending /" \
printf '\n%s\n %s\n' \
"# URL: www.example.com" \
"(https:// will be added if missing or force with http://)"
read -rp \
": Website URL ? " \
gsl_set_url
gsl__check_settings $gsl_set_url \
&& [[ "$gsl_process_stop" ]] \
&& return
[[ ${gsl_set_url: -1} == "/" ]] \
&& gsl_set_url=${gsl_set_url::-1}
gsl__check_settings $gsl_set_url || return
gsl_https='https://'
case "$gsl_set_url" in
"https://"*)
gsl_set_ndd=${gsl_set_url/$gsl_https/}
echo "D> Case: $gsl_set_ndd"
;;
"http://"*)
gsl_http="http://"
@ -67,13 +68,32 @@ esac
gsl_set_ndd=`awk -F"." '{print $(NF-1)"."$NF}' <<< $gsl_set_ndd`
gsl_set_file_ndd="$gsl_set_ndd.conf"
[[ -d "$gsl_dir_user_domains/$gsl_set_ndd" ]] \
&& gsl_profile="HOME: $gsl_dir_user_domains/$gsl_set_ndd" \
&& gsl_set_user_conf="Y"
[[ -d "$gsl_dir_global_domains/$gsl_set_ndd" ]] \
&& gsl_profile="System: $gsl_dir_global_domains/$gsl_set_ndd" \
&& gsl_set_user_conf="N"
if [[ "$gsl_profile" ]];then
echo "! A Profile exists in your $gsl_profile"
read -rp ": Continue (Y|*)" gsl_continue
case "$gsl_continue" in
Y|y) true ;;
*) gsl__check_settings $blank || return
esac
fi
#=======================================================================
# Personal use or global use ?
#=======================================================================
if ! [[ "$gsl_set_user_conf" ]];then
echo -e "\n# Save Domain in Home or Global"
read -rp \
": Home Use (y/n) ? " \
gsl_set_user_conf
fi
case "$gsl_set_user_conf" in
y|Y)
gsl_save_dir_ndd="$gsl_dir_user_domains/$gsl_set_ndd"
@ -96,9 +116,7 @@ read -rp \
": Website Title ? " \
gsl_set_title
gsl__check_settings $gsl_set_title \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_title || return
#=======================================================================
# Website Description
@ -107,9 +125,8 @@ echo -e "\n# Description: writings about this website"
read -rp \
": Website Description ? " \
gsl_set_about
gsl__check_settings $gsl_set_about\
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_about || return
#=======================================================================
# Contact Mail
@ -119,21 +136,17 @@ read -rp \
": Contact Mail ? " \
gsl_set_mail
gsl__check_settings $gsl_set_mail \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_mail || return
#=======================================================================
# Website Keywords
#=======================================================================
echo -e "\n# Keywords: geek,logiciels libre,friends (comma separated)"
echo -e "\n# GENERIC pages Keywords: geek stuff,free (comma separated)"
read -rp \
": Website Keywords ? " \
": Website Keywords for all Pages ? " \
gsl_set_keys
gsl__check_settings $gsl_set_keys \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_keys || return
#=======================================================================
# Language
@ -143,9 +156,7 @@ read -rp \
": Website Lang ? " \
gsl_set_lang
gsl__check_settings $gsl_set_lang \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_lang || return
#=======================================================================
# Copyright
@ -155,57 +166,58 @@ read -rp \
": Website Copyright ? " \
gsl_set_cr
gsl__check_settings $gsl_set_cr \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_cr || return
#=======================================================================
# Website Logo
#=======================================================================
printf '\n%s %s\n' \
printf '\n%s\n %s\n' \
"# logo: my-logo.png" \
"(Put it in $gsl_save_dir_ndd/templates/)"
read -rp \
": Website logo file NAME ? " \
gsl_set_logo
gsl__check_settings $gsl_set_logo \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_logo || return
#=======================================================================
# CSS Acronym
#=======================================================================
printf '\n%s %s\n' \
printf '\n%s\n %s\n' \
"# CSS (short) Acronym: myweb !No need to end with _" \
"(Will create specific classes like myweb_paragraph)"
read -rp \
": CSS Acronym ? " \
gsl_set_css
gsl__check_settings $gsl_set_css \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_css || return
#=======================================================================
# Author Reference
#=======================================================================
printf '\n%s %s\n' \
"# Author URL Profile: https://..." \
printf '\n%s\n %s\n' \
"# Author/Compagny URL Profile: https://..." \
"(Used for meta rel='me')"
read -rp \
": Author URL Profile ? " \
gsl_set_auth_url
gsl__check_settings $gsl_set_auth_url \
&& [[ "$gsl_process_stop" ]] \
&& return
gsl__check_settings $gsl_set_auth_url || return
#=======================================================================
# Folder for Posts
#=======================================================================
printf '\n%s\n %s\n %s\n' \
"# You can set here a folder for your writings' Posts"
"or manually do it later or add another one later"
"Autocompletion /NEWFOLDER (name of choice)"
read -erp ": Where will you add your files' Post ? " gsl_dir_user_posts
#=======================================================================
# Show Resume
#=======================================================================
clear
printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
"# New Website configurations..." \
": Webserver|$gsl_set_server" \
": URL|$gsl_set_url" \
@ -219,6 +231,7 @@ printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n' \
": Logo File|$gsl_set_logo" \
": CSS Acro|$gsl_set_css" \
": Author URL|$gsl_set_auth_url" \
": User folder writings' Posts|$gsl_dir_user_posts"
| column -t -s'|'
#=======================================================================
@ -270,14 +283,31 @@ fi
case "$gsl_set_confirm" in
y|Y)
! [[ -d "$gsl_save_dir_ndd/templates" ]] \
&& mkdir -p "$gsl_save_dir_ndd/templates" \
&& gsl__logs_print \
if ! [[ -d "$gsl_save_dir_ndd" ]];then
mkdir -p "$gsl_save_dir_ndd" && \
gsl__logs_print \
"$gsl_log_i" \
"Create" \
"Folder" \
"Configuration from $gsl_set_ndd" \
"$gsl_save_dir_ndd/templates"
"$gsl_save_dir_ndd/"
mkdir -p "$gsl_dir_user_posts" && \
gsl__logs_print \
"$gsl_log_i" \
"Create" \
"Folder" \
"User Posts from $gsl_set_ndd" \
"$gsl_dir_user_posts/"
touch "$gsl_dir_user_posts/gsl.$gsl_set_ndd" && \
gsl__logs_print \
"$gsl_log_i" \
"Create" \
"File" \
"gsl.$gsl_set_ndd" \
"$gsl_dir_user_posts/"
fi
;;
*)
gsl__new_website && return
@ -317,11 +347,7 @@ fi
# Check if no Response from $@
#=======================================================================
gsl__check_settings() {
case "$@" in
"")
gsl_process_stop=true
[[ "$@" ]] && return
echo "! Abandon... Maybe next time"
return
;;
esac
}

View File

@ -11,10 +11,10 @@ gsl__post_all_checkers() {
clear
unset gsl_check_done
echo -ne "\r\033[2K: Searching for #1..."
gsl__post_check_h1 || return
echo -n ": Searching for NEEDED HEADERS..."
gsl__post_check_needed_headers
echo -ne "\r\033[2K: Searching for #1..."
gsl__post_check_h1
echo -ne "\r\033[2K: Searching for PARAGRAPHS"
gsl__post_check_paragraphs
echo -ne "\r\033[2K: Searching for Content MARKERS..."
@ -29,6 +29,8 @@ echo -ne "\r\033[2K: Searching for FILES..."
gsl__post_check_files
echo -ne "\r\033[2K: Searching for IMAGES..."
gsl__post_check_images
echo -ne "\r\033[2K: Searching for BLOCK-CODES..."
gsl__post_check_bcodes
echo -ne "\r\033[2K"
@ -49,61 +51,48 @@ gsl__post_check_needed_headers() {
#-----------------------------------------------------------------------
# Title
gsl_header_title=`gsl__get_header "$gsl_marker_title" "$gsl_post"`
! [[ "$gsl_header_title" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Title" \
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
gsl__check_needed_headers \
"$gsl_header_title" \
"$gsl_marker_title" \
"POST TITLE"
# Slug
gsl_header_slug=`gsl__get_header "$gsl_marker_slug" "$gsl_post"`
! [[ "$gsl_header_slug" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Slug" \
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true \
gsl__check_needed_headers \
"$gsl_header_slug" \
"$gsl_marker_slug" \
"POST-TITLE" \
&& gsl_slug_err=true
# Author
gsl_header_author=`gsl__get_header "$gsl_marker_author" "$gsl_post"`
! [[ "$gsl_header_author" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Author" \
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true \
gsl__check_needed_headers \
"$gsl_header_author" \
"$gsl_marker_author" \
"REGISTRED NAME" \
&& gsl_author_err=true
# Date
gsl_header_date=`gsl__get_header "$gsl_marker_date" "$gsl_post"`
! [[ "$gsl_header_date" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Date" \
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true \
gsl__check_needed_headers \
"$gsl_header_date" \
"$gsl_marker_date" \
"YYYY-MM-DD" \
&& gsl_date_err=true
# Description
gsl_header_info=`gsl__get_header "$gsl_marker_info" "$gsl_post"`
! [[ "$gsl_header_info" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Infos" \
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
gsl__check_needed_headers \
"$gsl_header_info" \
"$gsl_marker_info" \
"DESCRIPTION"
# Tags
gsl_header_tags=`gsl__get_header "$gsl_marker_tags" "$gsl_post"`
gsl__check_needed_headers \
"$gsl_header_tags" \
"$gsl_marker_tags" \
"TAG1,OTHER TAG2,TAG3"
#-----------------------------------------------------------------------
# Check for VALID Content HEADERS
@ -114,8 +103,8 @@ if ! [[ "$gsl_author_err" ]] && \
gsl__logs_print \
"$gsl_log_e" \
"Author" \
"Post" \
"Header $gsl_marker_author" \
"$gsl_header_author not registred for domain $gsl_find_domain" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -127,8 +116,8 @@ if ! [[ "$gsl_date_err" ]] && \
gsl__logs_print \
"$gsl_log_e" \
"Date" \
"Post" \
"Header $gsl_marker_date" \
"$gsl_header_date not YYYY-MM-DD" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -141,12 +130,12 @@ if ! [[ "$gsl_slug_err" ]];then
if ! [[ "$gsl_header_slug" == "$gsl_header_slug_test" ]];then
gsl_new_header_slug="$gsl_marker_slug$gsl_header_slug_test"
sed -i \
"s|$gsl_marker_slug$gsl_header_slug|$gsl_new_header_slug" \
"s|$gsl_marker_slug$gsl_header_slug|$gsl_new_header_slug|" \
"$gsl_post" && \
gsl__logs_print \
"$gsl_log_w" \
"Slug" \
"Post" \
"Header $gsl_marker_slug" \
"Changed: $gsl_header_slug_test" \
"${PWD}/$gsl_post"
@ -168,9 +157,9 @@ grep -n "#1" $gsl_post \
if ! [[ "$gsl_post_begin" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Begin" \
"Post" \
"Missing content: #1 TITLE" \
"Content begin" \
"Missing: #1 TITLE" \
"${PWD}/$gsl_post"
gsl_checker_err=true
fi
@ -197,8 +186,8 @@ awk -v line="$gsl_post_begin" \
if (( "$gsl_post_p_open_nbr" == 0 ));then
gsl__logs_print \
"$gsl_log_e" \
"Paragraph" \
"Post" \
"Content paragraphs" \
"Missing content: ( and ) at begining lines" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -210,8 +199,8 @@ if (( "$gsl_post_p_open_nbr" == "$gsl_post_p_close_nbr" ));then
else
gsl__logs_print \
"$gsl_log_e" \
"Paragraph" \
"Post" \
"Content paragraphs" \
"Mismatch: (=$gsl_post_p_open_nbr ; )=$gsl_post_p_close_nbr" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -311,7 +300,7 @@ if [[ "$gsl_post_blockquotes_nbr_r" -eq 0 ]];then
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"Blockquotes" \
"Content citations" \
"NBR=$gsl_post_stat_bq > $gsl_mark_blockquote (2x)" \
"${PWD}/$gsl_post"
fi
@ -327,7 +316,7 @@ do
# Get & Check HEADER CONTENT
gsl__get_header_fields "$gsl_marker_abbr"
gsl__check_header_fields "Post" "ABBR" "$gsl_log_act_abbr" \
gsl__check_header_fields "Post" "Header $gsl_marker_abbr" "$gsl_log_act_abbr" \
|| continue
# Check POST CONTENT
@ -341,8 +330,8 @@ do
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"ABBR" \
"Missing Content: $gsl_post_header_field_1" \
"$gsl_log_c_abbr" \
"Missing: $gsl_post_header_field_1" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -351,7 +340,7 @@ done < <(gsl__get_header "$gsl_marker_abbr" "$gsl_post")
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"ABBR" \
"Header $gsl_marker_abbr" \
"NBR=$gsl_post_stat_abbr" \
"${PWD}/$gsl_post"
}
@ -365,11 +354,11 @@ while read -r "gsl_header_content_line"
do
# Get & Check Header CONTENT
gsl__get_header_fields "$gsl_marker_link"
gsl__check_header_fields "Post" "Link" "$gsl_log_act_link" \
gsl__check_header_fields "Post" "Header $gsl_marker_link" "$gsl_log_act_link" \
|| continue
# Not ALT TEXT ?
gsl__check_header_field3 "Post" "Link"
gsl__check_header_field3 "Post" "Header $gsl_marker_link"
# Find if ref is in CONTENT
[[ `gsl__get_content_with_markers "$gsl_mo_link" "$gsl_mc_link"` ]] \
@ -384,7 +373,7 @@ do
|| gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Link" \
"Header $gsl_marker_link" \
"URL offline: $gsl_post_header_field_2" \
"${PWD}/$gsl_post"
@ -392,8 +381,8 @@ do
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Link" \
"Missing Content: [_${gsl_post_header_field_1}_]" \
"$gsl_log_c_link" \
"Missing: [_${gsl_post_header_field_1}_]" \
"${PWD}/$gsl_post"
gsl_checker_err=true
@ -410,36 +399,79 @@ do
# Get & Check Header CONTENT
gsl__get_header_fields "$gsl_marker_file"
gsl__check_header_fields "Post" "File" "$gsl_log_act_file" \
gsl__check_header_fields "Post" "Header $gsl_marker_file" "$gsl_log_act_file" \
|| continue
# Not ALT TEXT ?
gsl__check_header_field3 "Post" "File"
gsl__check_header_field3 "Post" "Header $gsl_marker_file"
if ! [[ -f "$gsl_dir_domain_files/$gsl_post_header_field_2" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Header $gsl_marker_file" \
"Not found: $gsl_post_header_field_2" \
"$gsl_dir_domain_files/$gsl_post_header_field_2"
gsl_checker_err=true
fi
# Find if ref is in CONTENT
[[ `gsl__get_content_with_markers "$gsl_mo_file" "$gsl_mc_file"` ]] \
&& gsl_post_stat_file=$(( $gsl_post_stat_file + 1 )) \
&& continue
[[ -f "$gsl_dir_domain_files/$gsl_post_header_field_2" ]] \
&& continue \
|| gsl__logs_print \
# Missing CONTENT
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"File" \
"$gsl_log_c_file" \
"Missing: <_${gsl_post_header_field_1}_>" \
"${PWD}/$gsl_post"
gsl_checker_err=true
done < <(gsl__get_header "$gsl_marker_file" "$gsl_post")
}
#=======================================================================
# Check Post for CODES HEADER + Content
#=======================================================================
gsl__post_check_bcodes() {
gsl_post_stat_bcode=0
while read -r "gsl_header_content_line"
do
# Get & Check Header CONTENT
gsl__get_header_fields "$gsl_marker_code"
gsl__check_header_fields "Post" "Header $gsl_marker_code" "$gsl_log_act_code" \
|| continue
if ! [[ -f "$gsl_dir_domain_files/$gsl_post_header_field_2" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Header $gsl_marker_code" \
"Not found: $gsl_post_header_field_2" \
"$gsl_dir_domain_files/$gsl_post_header_field_2"
gsl_checker_err=true
fi
# Find if ref is in CONTENT
[[ `gsl__get_content_line \
"$gsl_mark_code : $gsl_post_header_field_1" \
"$gsl_post"` ]] \
&& gsl_post_stat_bcode=$(( $gsl_post_stat_bocde + 1 )) \
&& continue
# Missing CONTENT
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"File" \
"Missing Content: <_${gsl_post_header_field_1}_>" \
"$gsl_log_c_code" \
"Missing: $gsl_mark_code : ${gsl_post_header_field_1}" \
"${PWD}/$gsl_post"
gsl_checker_err=true
done < <(gsl__get_header "$gsl_marker_file" "$gsl_post")
done < <(gsl__get_header "$gsl_marker_code" "$gsl_post")
}
#=======================================================================
@ -452,11 +484,21 @@ do
# Get & Check Header CONTENT
gsl__get_header_fields "$gsl_marker_image"
gsl__check_header_fields "Post" "Image" "$gsl_log_act_image" \
gsl__check_header_fields "Post" "Header $gsl_marker_image" "$gsl_log_act_image" \
|| continue
# Not ALT TEXT ?
gsl__check_header_field3 "Post" "Image"
gsl__check_header_field3 "Post" "Header $gsl_marker_image"
if ! [[ -f "$gsl_dir_domain_files/$gsl_post_header_field_2" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Header $gsl_marker_image" \
"Not found: $gsl_post_header_field_2" \
"$gsl_dir_domain_files/$gsl_post_header_field_2"
gsl_checker_err=true
fi
# Find if ref is in CONTENT
[[ `gsl__get_content_line \
@ -465,21 +507,12 @@ do
&& gsl_post_stat_image=$(( $gsl_post_stat_image + 1 )) \
&& continue
[[ -f "$gsl_dir_domain_files/$gsl_post_header_field_2" ]] \
&& continue \
|| gsl__logs_print \
"$gsl_log_e" \
"Post" \
"image" \
"Not found: $gsl_post_header_field_2" \
"$gsl_dir_domain_files/$gsl_post_header_field_2"
# Missing CONTENT
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Image" \
"Missing Content: _image_ : ${gsl_post_header_field_1}" \
"$gsl_log_c_image" \
"Missing: $gsl_mark_image : ${gsl_post_header_field_1}" \
"${PWD}/$gsl_post"
gsl_checker_err=true

View File

@ -10,10 +10,9 @@
gsl__check_nbr_posts() {
gsl_nbr_posts=`ls -1 *.gsl 2>/dev/null | wc -l`
(( $gsl_nbr_posts >= 1 )) \
&& return
echo "! No Posts found with .gsl extension"
! (( $gsl_nbr_posts >= 1 )) \
&& echo "! No Posts found with .gsl extension" \
&& exit 1
}
#=======================================================================
@ -117,9 +116,11 @@ awk -v s="$1" \
# Get everything after the marker... $1: marker | $2: File
#=======================================================================
gsl__get_header() {
awk -F"$1" -v marker="$1" \
'{if ($0 ~ marker) print $2}' \
awk -F"$1" -v marker="$1" -v l="$gsl_post_begin" \
'NR < l && $0 ~ marker {print $2}' \
"$2" 2>/dev/null
# '{if ($0 ~ marker) print $2}' \
}
#=======================================================================
@ -182,6 +183,21 @@ elif [[ "$ivar" ]];then
fi
}
#=======================================================================
# Check & get NEEDED HEADERS | $1 VAR CONTENT $2 LOG Proc $3 LOG Act
#=======================================================================
gsl__check_needed_headers() {
! [[ "$1" ]] \
&& gsl__logs_print \
"$gsl_log_e" \
"Post" \
"Header $2" \
"Missing: POST TITLE" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
}
#=======================================================================
# Get Fields and line nbr from header from marker
#=======================================================================

View File

@ -60,26 +60,23 @@ find . -maxdepth 1 -not -type d -type f \
-iname "gsl.*.*" 2>/dev/null \
| wc -l`
if (( $gsl_nbr_domains > 1 ));then
echo "! Too much domains registred here: Set only One per folder"
return
elif (( $gsl_nbr_domains == 0 ));then
echo "! No registred domain here: change or set folder. See help new"
return
fi
(( $gsl_nbr_domains > 1 )) \
&& echo "! Too much domains registred here: Set only One per folder" \
&& exit $gsl_nbr_domains
(( $gsl_nbr_domains == 0 )) \
&& echo "! No registred domain here: change or set folder. See help new" \
&& exit 1
gsl_find_domain=`
find . -maxdepth 1 -not -type d -type f \
-iname "gsl.*.*" 2>/dev/null`
if [[ "$gsl_find_domain" ]];then
gsl_find_domain=`
awk -F"." '{print $(NF-1)"."$NF}' \
<<< $gsl_find_domain`
gsl_find_domain=${gsl_find_domain,,}
gsl__check_domain "$gsl_find_domain" || return
fi
gsl__check_domain "$gsl_find_domain"
}
#=======================================================================
@ -90,7 +87,7 @@ gsl_this_conf_domain=`grep "$1" "$gsl_file_db_domains"`
! [[ "$gsl_this_conf_domain" ]] \
&& echo "! Domain Not found: $1" \
&& return
&& exit 1
gsl_dir_domain_tpl="$gsl_this_conf_domain/templates"
gsl_dir_domain_files="$gsl_this_conf_domain/files"