Fixes + checkers added

This commit is contained in:
Cyrille L 2022-02-14 02:57:58 +01:00
parent 3918057363
commit a6fe6ee50c
4 changed files with 431 additions and 189 deletions

View File

@ -39,6 +39,7 @@ case "$gsl_process" in
# case if post exists in DB posts.db ?
gsl__db_post_exists "$gsl_file_db_posts"
if [[ "$gsl_db_post_exists" ]];then
sed -i "${gsl_db_post_line_nbr}s/.*/$gsl_db_line/" \
"$gsl_file_db_posts" && \

View File

@ -11,12 +11,22 @@ gsl__post_all_checkers() {
clear
unset gsl_check_done
echo -n ": Searching for Headers..."
gsl__post_check_headers
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 Paragraph"
gsl__post_check_paragraphs
echo -ne "\r\033[2K: Searching for Content MARKERS..."
gsl__post_check_markers
echo -ne "\r\033[2K: Searching for BLOCKQUOTE..."
gsl__post_check_blockquote
echo -ne "\r\033[2K: Searching for ABBR..."
gsl__post_check_abbr
echo
#echo -ne "\r\033[2K"
# End of checkers : show logs for war and err
[[ "$gsl_checker_war" ]] \
@ -24,17 +34,15 @@ echo
[[ "$gsl_checker_err" ]] \
&& gsl log -s -e
}
#=======================================================================
# Check Post for VALID Content HEADERS
# Check Post for MISSING & VALID Content HEADERS
#=======================================================================
gsl__post_check_headers() {
#
gsl__post_check_needed_headers() {
#-----------------------------------------------------------------------
# Check if Missing NEEDED HEADERS
#
#-----------------------------------------------------------------------
# Title
gsl_header_title=`gsl__get_header "$gsl_marker_title" "$gsl_post"`
! [[ "$gsl_header_title" ]] \
@ -55,7 +63,8 @@ gsl_header_slug=`gsl__get_header "$gsl_marker_slug" "$gsl_post"`
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
&& gsl_checker_err=true \
&& gsl_slug_err=true
# Author
gsl_header_author=`gsl__get_header "$gsl_marker_author" "$gsl_post"`
@ -66,7 +75,8 @@ gsl_header_author=`gsl__get_header "$gsl_marker_author" "$gsl_post"`
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
&& gsl_checker_err=true \
&& gsl_author_err=true
# Date
gsl_header_date=`gsl__get_header "$gsl_marker_date" "$gsl_post"`
@ -77,7 +87,8 @@ gsl_header_date=`gsl__get_header "$gsl_marker_date" "$gsl_post"`
"Post" \
"Missing" \
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
&& gsl_checker_err=true \
&& gsl_date_err=true
# Description
gsl_header_info=`gsl__get_header "$gsl_marker_info" "$gsl_post"`
@ -90,12 +101,13 @@ gsl_header_info=`gsl__get_header "$gsl_marker_info" "$gsl_post"`
"${PWD}/$gsl_post" \
&& gsl_checker_err=true
#
#-----------------------------------------------------------------------
# Check for VALID Content HEADERS
#
#-----------------------------------------------------------------------
# Author registred
if ! [[ `grep "$gsl_header_author" "$gsl_file_auth_ndd"` ]];then
if ! [[ "$gsl_author_err" ]] && \
! [[ `grep "$gsl_header_author" "$gsl_file_auth_ndd"` ]];then
gsl__logs_print \
"$gsl_log_e" \
"Author" \
@ -106,7 +118,9 @@ if ! [[ `grep "$gsl_header_author" "$gsl_file_auth_ndd"` ]];then
fi
# Date Format YYYY-MM-DD
if ! [[ "$gsl_header_date" =~ $gsl_test_date ]];then
if ! [[ "$gsl_date_err" ]] && \
! [[ "$gsl_header_date" =~ $gsl_test_date ]];then
gsl__logs_print \
"$gsl_log_e" \
"Date" \
@ -116,13 +130,14 @@ if ! [[ "$gsl_header_date" =~ $gsl_test_date ]];then
gsl_checker_err=true
fi
[[ "$gsl_checker_err" ]] && return
# Slug format title-post
gsl_header_slug_test=${gsl_header_slug// /-}
if ! [[ "$gsl_header_slug" == "$gsl_header_slug_test" ]];then
if ! [[ "$gsl_slug_err" ]];then
gsl_header_slug_test=${gsl_header_slug// /-}
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" \
sed -i \
"s|$gsl_marker_slug$gsl_header_slug|$gsl_new_header_slug" \
"$gsl_post" && \
gsl__logs_print \
"$gsl_log_w" \
@ -130,7 +145,10 @@ if ! [[ "$gsl_header_slug" == "$gsl_header_slug_test" ]];then
"Post" \
"Changed: $gsl_header_slug_test" \
"${PWD}/$gsl_post"
gsl_header_slug=$gsl_header_slug_test
gsl_checker_war=true
fi
fi
}
@ -153,3 +171,192 @@ if ! [[ "$gsl_post_begin" ]];then
gsl_checker_err=true
fi
}
#=======================================================================
# Check for paragraphs ( and )
#=======================================================================
gsl__post_check_paragraphs() {
gsl_post_p_open_nbr=`
awk -v line="$gsl_post_begin" \
-v op="$gsl_mo_p" \
'NR > line && $1 == op' \
"$gsl_post" \
| wc -l`
gsl_post_p_close_nbr=`
awk -v line="$gsl_post_begin" \
-v cp="$gsl_mc_p" \
'NR > line && $1 == cp' \
"$gsl_post" \
| wc -l`
if (( "$gsl_post_p_open_nbr" == 0 ));then
gsl__logs_print \
"$gsl_log_e" \
"Paragraph" \
"Post" \
"Missing content: ( and ) at begining lines" \
"${PWD}/$gsl_post"
gsl_checker_err=true
gsl_checker_err=true
return
fi
if (( "$gsl_post_p_open_nbr" == "$gsl_post_p_close_nbr" ));then
gsl_post_stat_p="$gsl_post_p_open_nbr"
else
gsl__logs_print \
"$gsl_log_e" \
"Paragraph" \
"Post" \
"Mismatch: (=$gsl_post_p_open_nbr ; )=$gsl_post_p_close_nbr" \
"${PWD}/$gsl_post"
gsl_checker_err=true
return
fi
}
#=======================================================================
# Check and count MARKERS content (Strong, links...)
#=======================================================================
gsl__post_check_markers() {
gsl_markers_nbr=$(( ${#gsl_o_markers[@]} - 1 ))
gsl_post_stat_m=(0 0 0 0 0 0)
while read -r "gsl_post_line"
do
gsl_line_nbr=`awk -F":" '{print $1}' <<< $gsl_post_line`
for gsl_i in `seq 0 $gsl_markers_nbr`
do
if [[ "$gsl_post_line" =~ ${gsl_o_markers[gsl_i]} ]];then
# Open Marker by Type
gsl_o=`
grep -o "${gsl_o_markers[gsl_i]}" \
<<< $gsl_post_line \
| wc -l`
# Close Marker by Type
gsl_c=`
grep -o "${gsl_c_markers[gsl_i]}" \
<<< $gsl_post_line \
| wc -l`
# Strong Vs Bold | 2= **_ / 3= *_ in array
if (( $gsl_i == 2 ));then
gsl_oS=$gsl_o # Open Strong marker nbr
gsl_cS=$gsl_c # Close Strong marker nbr
elif (( $gsl_i == 3 ));then
# Count difference from Strong
if (( $gsl_oS ));then
gsl_o=$(( $gsl_o - $gsl_oS ))
unset gsl_oS
fi
if (( $gsl_cS ));then
gsl_c=$(( $gsl_c - $gsl_cS ))
unset gsl_cS
fi
fi
# Compare
if ! (( $gsl_o == $gsl_c ));then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"${gsl_i_markers[gsl_i]}" \
"Line $gsl_line_nbr: Mismatch ${gsl_u_markers[gsl_i]}" \
"${PWD}/$gsl_post"
gsl_checker_err=true
else
gsl_post_stat_m[gsl_i]=$(( gsl_post_stat_m[gsl_i] + gsl_o ))
fi
fi
done
done < <(awk -v line="$gsl_post_begin" \
'NR >= line {print NR":",$0}' \
"$gsl_post")
# Show Counts in logs
for gsl_i in `seq 0 $gsl_markers_nbr`
do
if (( ${gsl_post_stat_m[gsl_i]} >= 1 ));then
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"${gsl_i_markers[gsl_i]}" \
"NBR=${gsl_post_stat_m[gsl_i]} > ${gsl_u_markers[gsl_i]}" \
"${PWD}/$gsl_post"
fi
done
}
#=======================================================================
# Check for blockquotes: ---
#=======================================================================
gsl__post_check_blockquote() {
gsl_post_blockquotes_nbr=`
awk -v line="$gsl_post_begin" \
-v bq="$gsl_mark_blockquote" \
'NR > line && $1 == bq' \
"$gsl_post" \
| wc -l`
gsl_post_blockquotes_nbr_r=$(( $gsl_post_blockquotes_nbr % 2 ))
if [[ "$gsl_post_blockquotes_nbr_r" -eq 0 ]];then
gsl_post_stat_bq=$(( $gsl_post_blockquotes_nbr / 2 ))
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"Blockquotes" \
"NBR=$gsl_post_stat_bq > $gsl_mark_blockquote (2x)" \
"${PWD}/$gsl_post"
fi
}
#=======================================================================
# Check Post for ABBR HEADER + Content
#=======================================================================
gsl__post_check_abbr() {
while read -r "gsl_header_abbr"
do
gsl_post_abbr_s=`gsl__get_header_field 1 "$gsl_header_abbr"`
gsl_post_abbr_l=`gsl__get_header_field 2 "$gsl_header_abbr"`
gsl_post_line_nbr=`gsl__get_line "$gsl_header_abbr" "$gsl_post"`
if ! [[ "$gsl_post_abbr_s" ]] || \
! [[ "$gsl_post_abbr_l" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"ABBR" \
"Missing Line $gsl_post_line_nbr. $gsl_marker_abbr: Short : Long" \
"${PWD}/$gsl_post"
gsl_checker_err=true
continue
fi
while read -r "gsl_content_line_nbr"
do
gsl_abbr_lines+="$gsl_content_line_nbr,"
done < <(gsl__get_content_line "$gsl_post_abbr_s" "$gsl_post" )
if ! [[ "$gsl_abbr_lines" ]];then
gsl__logs_print \
"$gsl_log_e" \
"Post" \
"ABBR" \
"Missing content: $gsl_post_abbr_s" \
"${PWD}/$gsl_post"
gsl_checker_err=true
else
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"ABBR" \
"Found: $gsl_post_abbr_s line $gsl_abbr_lines" \
"${PWD}/$gsl_post"
fi
done < <(gsl__get_header "$gsl_marker_abbr" "$gsl_post")
}

View File

@ -9,6 +9,7 @@
#=======================================================================
gsl__check_nbr_posts() {
gsl_nbr_posts=`ls -1 *.gsl 2>/dev/null | wc -l`
(( $gsl_nbr_posts == 0 )) \
&& echo "! No Posts found with .gsl extension"
}
@ -33,7 +34,10 @@ do
case "$1" in
check)
gsl__post_compare_hash && continue
if ! [[ "$gsl_force_check" ]];then
gsl__post_compare_hash || continue
fi
gsl__logs_print \
"$gsl_log_i" \
"Reading" \
@ -43,10 +47,8 @@ do
gsl__post_all_checkers
# No error: Check/Write to DB (posts.db)
if ! [[ "$gsl_checker_err" ]];then
gsl_process="Checked"
gsl__db_line_post
fi
;;
make)
@ -91,14 +93,42 @@ if [[ "$gsl_db_post_hash" == "$gsl_post_hash" ]];then
"$gsl_post already Checked from $gsl_post_hash" \
"$gsl_file_db_posts"
gsl_check_done=true
return 1
fi
}
#=======================================================================
# Get everything after the marker. $1: marker | $2: File
# Get line nbr from Post... $1: TERM | $2: File
#=======================================================================
gsl__get_line() {
awk -v s="$1" \
'match($0,s) {print NR}' \
"$2"
}
#=======================================================================
# Get everything after the marker... $1: marker | $2: File
#=======================================================================
gsl__get_header() {
awk -F"$1" -v marker="$1" \
'{if ($0 ~ marker) print $2}' \
"$2" 2>/dev/null
}
#=======================================================================
# Get fields from variable... $1: field | $2: variable
#=======================================================================
gsl__get_header_field() {
awk -F" : " -v f="$1" \
'NFS=f {print $NFS}' \
<<< "$2"
}
#=======================================================================
# Get fields from variable... $1: field | $2: variable
#=======================================================================
gsl__get_content_line() {
awk -v line="$gsl_post_begin" -v s="$1" \
'NR >= line && $0 ~ s {print NR}' \
"$2"
}

View File

@ -21,7 +21,7 @@ fi
#=======================================================================
gsl__check_file() {
if ! [[ -f "$1" ]];then
return 1
return
fi
}
@ -56,8 +56,10 @@ done
#=======================================================================
gsl__find_domain() {
gsl_nbr_domains=`
find . -maxdepth 1 -not -type d -type f -iname "gsl.*.*" 2>/dev/null \
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
@ -67,14 +69,15 @@ elif (( $gsl_nbr_domains == 0 ));then
fi
gsl_find_domain=`
find . -maxdepth 1 -not -type d -type f -iname "gsl.*.*" 2>/dev/null`
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_find_domain=${gsl_find_domain,,}
gsl__check_domain "$gsl_find_domain"
fi
}
@ -84,6 +87,7 @@ fi
#=======================================================================
gsl__check_domain() {
gsl_this_conf_domain=`grep "$1" "$gsl_file_db_domains"`
! [[ "$gsl_this_conf_domain" ]] \
&& echo "! Domain Not found: $1"
}