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

336 lines
7.9 KiB
Bash

#!/bin/bash
# file: gsl__srv_manager
# Folder: /var/lib/gsl/scripts
# By echolib (XMPP: im@echolib.re)
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#======================================================================
# w<< (ARGUMENT)
# $1: process
# $2: file / all
#======================================================================
srv__OPTIONS() {
case "$2" in
sync) sync__OPTIONS $1 ;;
add) true ;;
remove) true ;;
*) gsl__invalid_option "$2" "add|remove|sync"
esac
case "$3" in
*".gsl")
if__file "$3" post
gsl_post="$3"
post_only="$3"
case "$1" in
wip)
gsl make "$3"
exit
;;
esac
;;
all)
case "$1" in
www)
echo "! You're about to put online all wip articles"
read -rp "- Continue (YES|*)" www_confirm
case "www_confirm" in
YES) gsl_www="$3" ;;
*) echo "# Abandon"; exit ;;
esac
;;
wip)
gsl make
exit
;;
esac
;;
"")
gsl__invalid_option "$3" "all|file"
;;
esac
www_process=true
[[ "$gsl_post" ]] || log_info_all=" ALL"
log__process_begin "Server ($1 online)${log_info_all}"
posts__loop "$1" "$2"
# For logs ; set post or unset if all
[[ $log_info_all ]] && unset gsl_post
[[ $post_only ]] && gsl_post="$post_only"
log__process_end "Server ($1 online)${log_info_all}"
}
#======================================================================
# wip: remove online
#======================================================================
WIP__remove() {
case "$1" in
remove)
if [[ -f "$gsl_srv_post_wip" ]];then
rm -f "$gsl_srv_post_wip" && \
gsl__logs_print -w -srv wip \
"Article deleted ; no more online" \
"$gsl_srv_post_wip"
find "$gsl_srv_wip" -type d -empty -delete && \
gsl__logs_print -w -srv wip \
"Cleaned empty directories" \
"$gsl_srv_wip"
DB__set_status "wip-del"
fi
return
;;
esac
}
#======================================================================
# www: Valid online
#======================================================================
WWW__validate() {
case "$1" in
remove)
if [[ -f "$gsl_srv_post_www" ]];then
rm -f "$gsl_srv_post_www" && \
gsl__logs_print -w -srv www \
"Article deleted ; no more online" \
"$gsl_srv_post_www"
find "$gsl_srv_www" -type d -empty -delete && \
gsl__logs_print -w -srv www \
"Cleaned empty directories" \
"$gsl_srv_www"
DB__set_status "www-del"
fi
return
;;
esac
if ! [[ $article_Status_chk ]];then
gsl__logs_print -e -srv www \
"Article not yet checked" \
"$PWD/$gsl_post"
return
elif (( $article_Status_chk != $article_Status_wip ));then
gsl__logs_print -e -srv www \
"Article not yet converted with make" \
"$gsl_srv_post_wip"
return
elif (( $article_Status_chk == $article_Status_www )) && \
[[ -f "$gsl_srv_post_www" ]];then
gsl__logs_print -w -srv www \
"Article already online" \
"$gsl_srv_post_www"
return
else
if (( $article_Status_chk == $article_Status_wip ));then
[[ "$article_Slug" =~ "/" ]] \
&& mkdir -p "$gsl_slug_dir_www"
rsync -a "$gsl_srv_post_wip" "$gsl_srv_post_www" && \
gsl__logs_print -i -srv www \
"Article validated online" \
"$gsl_srv_post_www" && \
DB__set_status "www"
fi
fi
}
#======================================================================
# Get arguments from COMMAND (sync)
# $2: process (wip|www|"")
#======================================================================
sync__OPTIONS() {
gsl_srv_wip="$site_server/$site_ndd/wip"
gsl_srv_www="$site_server/$site_ndd/www"
case "$1" in
""|www|wip)
! [[ "$1" ]] \
&& srv_proc="wip+www" \
|| srv_proc="$1"
log__process_begin "Sync $srv_proc"
case "$1" in
"")
sync__srv "$srv_proc" "$gsl_srv_wip"
sync__srv "$srv_proc" "$gsl_srv_www"
;;
www)
sync__srv "$srv_proc" "$gsl_srv_www"
;;
wip)
sync__srv "$srv_proc" "$gsl_srv_wip"
;;
esac
log__process_end "Sync $srv_proc"
;;
*)
gsl__invalid_option "$2" "www|wip"
;;
esac
exit
}
#======================================================================
# Sync Files from Templates to webserver
# $1: process (wip|www|wip+www)
# $2: Folder
#======================================================================
sync__srv() {
# Sync Files and Folders
mkdir -p "$2"
rsync -a --delete "$gsl_dir_domain_tpl" "$2"
rsync -a --delete "$gsl_dir_domain_files" "$2"
rsync -a --delete "$gsl_dir_domain_images" "$2"
rsync -a --delete "$gsl_dir_domain_listings" "$2"
gsl__logs_print -i -srv $1 \
"Sync: $gsl_dir_domain/" \
"$2/"
}
#======================================================================
# Set Post/Page file for www+wip from page type and slug
# Find server post/page file and log
#======================================================================
srv__files() {
gsl_srv_wip="$site_server/$site_ndd/wip"
gsl_srv_www="$site_server/$site_ndd/www"
case "$1" in
datas)
unset srv_uri
case "$article_Type" in
post)
gsl_srv_post_wip="$gsl_srv_wip/$article_Slug/index.html"
gsl_srv_post_www="$gsl_srv_www/$article_Slug/index.html"
gsl_slug_file="$article_Slug/index.html"
gsl_slug_dir_wip=${gsl_srv_post_wip%\/*}
gsl_slug_dir_www=${gsl_srv_post_www%\/*}
# Count sub directories
sub_uri="${article_Slug//[^\/]}"
srv_uri+=`printf '%0.s../' $(seq 0 ${#sub_uri})`
;;
page)
gsl_srv_post_wip="$gsl_srv_wip/$article_Slug.html"
gsl_srv_post_www="$gsl_srv_www/$article_Slug.html"
gsl_slug_file="$article_Slug.html"
srv_uri='./'
;;
*)
return
;;
esac
# wip file ?
if [[ -f "$gsl_srv_post_wip" ]];then
[[ "$article_Status_wip" == "$article_Status_chk" ]] \
&& wip_status="(current)" \
|| wip_status="(old)"
gsl_srv_wip_file=true
else
unset gsl_srv_wip_file
fi
# www file ?
if [[ -f "$gsl_srv_post_www" ]];then
[[ "$article_Status_www" == "$article_Status_chk" ]] \
&& www_status="(current)" \
|| www_status="(old)"
gsl_srv_www_file=true
else
unset gsl_srv_www_file
fi
;;
logs)
# WIP file
if [[ $gsl_srv_wip_file ]];then
gsl__logs_print -i -srv -wip \
"HTML $article_Type Found $wip_status" \
"$gsl_srv_post_wip"
else
gsl__logs_print -w -srv -wip \
"HTML $article_Type not created yet" \
"$gsl_srv_post_wip"
fi
# WWW file
if [[ $gsl_srv_www_file ]];then
gsl__logs_print -i -srv -www \
"HTML $article_Type Found $www_status" \
"$gsl_srv_post_www"
else
gsl__logs_print -w -srv -www \
"HTML $article_Type not created yet" \
"$gsl_srv_post_www"
fi
;;
esac
}
#======================================================================
# Remove WIP page
# If error from check and exists
#======================================================================
wip__remove() {
! [[ -f "$gsl_srv_post_wip" ]] && return
log_Type="in $article_Slug"
# Remove from old slug, if new article Type set
[[ "$old_Type" ]] \
&& article_Type="$old_Type" \
&& article_Slug="$old_Slug" \
&& log_Type="from old $old_Type"
rm -f "$gsl_srv_post_wip" && \
gsl__logs_print -w -S -wip \
"Article deleted ; no more preview" \
"$gsl_srv_post_wip"
find "$gsl_srv_wip" -type d -empty -delete && \
gsl__logs_print -w -S -wip \
"Cleaned empty directories" \
"$gsl_srv_wip"
gsl__logs_print -w -R -wip \
"Found $1 $log_Type" \
"$gsl_srv_post_wip"
if [[ "$old_Type" ]];then
unset old_Type old_Slug log_Type
[[ -f "$gsl_file_db_post" ]] \
&& source "$gsl_file_db_post"
fi
}