gsl-statique-litterateur/var/lib/gsl/scripts/gsl__post_manager

221 lines
5.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# file: gsl__post_manager
# Folder: /var/lib/gsl/scripts
# By echolib (XMPP: im@echolib.re)
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#======================================================================
# ---------------------------------
# LOOP. Read ALL .gsl files in $PWD
# ---------------------------------
#======================================================================
posts__loop() {
for gsl_post in `ls -1 *.gsl 2>/dev/null`
do
# Do specific asked Post
[[ "$gsl_this_post" ]] && ! [[ "$gsl_post" == "$gsl_this_post" ]] \
&& continue
# Set DB files (here, for newer post)
gsl_file_db_post="$gsl_dir_db_domain/$gsl_post.db"
gsl_file_db_post_hash="$gsl_dir_db_domain/.$gsl_post.db"
# check newer only
[[ $gsl_check_newer ]] && [[ -f "$gsl_file_db_post" ]] \
&& continue
article__sum "$gsl_post" || continue
article__splitter || return
DB__datas "$1"
DB__compare_hash "$1"
[[ "$article_Type" ]] \
&& srv__files datas
# From COMMAND [OPT]
case "$1" in
check) Checkers ;;
make) Makers ;;
www) WWW__validate "$2" ;;
wip) WIP__remove "$2" ;;
esac
# In DB, show logs for server
if [[ "$article_Type" ]];then
if [[ $article_new_hash ]];then
[[ "$old_Type" ]] \
&& log_content="new TYPE" \
|| log_content="new content"
wip__remove "$log_content"
fi
srv__files datas
srv__files logs
fi
unset ${!article_@}
done
# Remove split files
[[ -f "$gsl_tmp_post" ]] && rm -f "$gsl_tmp_post"
[[ -f "$gsl_tmp_head" ]] && rm -f "$gsl_tmp_head"
}
#======================================================================
#---------------------
# Tools for post files
#---------------------
#======================================================================
#======================================================================
# Check if .gsl files
#======================================================================
if__gsl_post() {
gsl_nbr_posts=`ls -1 *.gsl 2>/dev/null | wc -l`
(( $gsl_nbr_posts == 0 )) \
&& echo "! No .gsl file in this folder" \
&& exit
}
#======================================================================
# Get line from first title to split header & content
#======================================================================
article__splitter() {
gsl_post_begin=`
awk -v m="#1" \
'match($1,m) {print NR;exit}' \
"$gsl_post"`
if ! [[ "$gsl_post_begin" ]];then
gsl__logs_print -e -c \
"Begins" \
"Unused: '#1' TITLE" \
"${PWD}/$gsl_post"
return 1
fi
file__header_only
file__post_only
gsl__logs_print -i -g \
"Split" \
"line: $gsl_post_begin ; Header + Content" \
"$gsl_tmp_head + $gsl_tmp_post"
}
#======================================================================
# Create TMP file > Get Headers metas Only (before #1)
#======================================================================
file__header_only() {
gsl_tmp_head=`mktemp`
awk -v l="$gsl_post_begin" \
'NR < l' \
"$gsl_post" \
> "$gsl_tmp_head"
}
#======================================================================
# Create TMP file > Get Content Post Only (after #1)
#======================================================================
file__post_only() {
gsl_tmp_post=`mktemp`
awk -v l="$gsl_post_begin" \
'NR >= l' \
"$gsl_post" \
> "$gsl_tmp_post"
}
#======================================================================
# Get Size & cksum Hash from File... $1: File
#======================================================================
article__sum() {
article_Sum=`cksum "$1"`
article_Hash=`awk '{print $1}' <<< "$article_Sum"`
article_Size=`awk '{print $2}' <<< "$article_Sum"`
case "$gsl_proc" in
create|edit) return ;;
esac
# Post too small ?
if (( "$article_Size" <= $gsl_article_min_Size ));then
gsl__logs_print -w -A -sk \
"Not enough content ($article_Size < $gsl_article_min_Size)" \
"${PWD}/$1"
return 1
fi
gsl__logs_print -i -A -src \
"Hash: $article_Hash ; Size: $article_Size" \
"${PWD}/$1"
}
#======================================================================
# Get arguments from COMMAND (create)
# $2: post type
# $3: post name
#======================================================================
new__article_OPTIONS() {
gsl__find_domain
author__check || exit 0
# exit if no postname
! [[ "$3" ]] \
&& gsl__invalid_option "$3" "Please set a name for your $2"
gsl_postname="$3"
case "$gsl_postname" in
*".gsl") gsl_postname=${gsl_postname/%.gsl/}
esac
# File exists
[[ -f "$gsl_postname.gsl" ]] \
&& echo "! $PWD/$gsl_postname.gsl already exists..." \
&& exit
gsl_proc="create"
[[ `grep -i "fr" <<<"$gsl_site_lang"` ]] \
&& gsl_today=`printf '%(%d-%m-%Y)T'` \
|| gsl_today=`date +%F`
gsl_post="$gsl_postname.gsl"
log__process_begin "Create $2"
touch "$PWD/$gsl_post"
cat << EONEWP >> "$PWD/$gsl_post"
type: $2
title:
slug:
info:
author:
tags:
date: $gsl_today
# Uncomment and fill
#link: NAME : URL : Alt-Text
#image: NBR : URI : ALT-TEXT
#abbr: SHORT : LONG
#1
·Bold· •Strong• ”Emphasis” ×Stile× ¤cat -n "$PWD/$gsl_postname.gsl"¤
EONEWP
get__post_sum "$gsl_post"
gsl__logs_print -i -f -src \
"Hash: $gsl_post_hash ; Size: $gsl_post_size" \
"$PWD/$gsl_post"
log__process_end "Create $2"
cat -n "$PWD/$gsl_post"
echo
gsl check "$gsl_post"
exit
}