275 lines
6.8 KiB
Bash
275 lines
6.8 KiB
Bash
#!/bin/bash
|
|
# file: gsl__post_manager
|
|
# Folder: /var/lib/gsl/scripts
|
|
# By echolib
|
|
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
|
|
|
|
#-----------------------------------------------------------------------
|
|
# -----------------------------------------------------------
|
|
# MAIN LOOP. Read from Post list. Do according to Post Status
|
|
# -----------------------------------------------------------
|
|
#-----------------------------------------------------------------------
|
|
gsl__loop_posts() {
|
|
gsl__check_nbr_posts
|
|
(( $gsl_nbr_posts == 0 )) \
|
|
&& gsl__logs_print \
|
|
"$gsl_log_i" \
|
|
"Posts" \
|
|
"Not found" \
|
|
"$gsl_nbr_posts post. Nothing to do in" \
|
|
"${PWD}" \
|
|
&& return
|
|
|
|
gsl__logs_print \
|
|
"$gsl_log_i" \
|
|
"Posts" \
|
|
"Found" \
|
|
"$gsl_nbr_posts posts in" \
|
|
"${PWD}"
|
|
|
|
for gsl_post in `ls -1 *.gsl 2>/dev/null`
|
|
do
|
|
|
|
# Check specific asked Post
|
|
if [[ "$gsl_this_post" ]];then
|
|
! [[ "$gsl_post" == "$gsl_this_post" ]] \
|
|
&& continue
|
|
fi
|
|
|
|
gsl__get_sum "$gsl_post"
|
|
|
|
# Post too small
|
|
if (( "$gsl_post_size" <= $gsl_post_min_size ));then
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"Post" \
|
|
"Size" \
|
|
"$gsl_post - Too small $gsl_post_size <= $gsl_post_min_size" \
|
|
"${PWD}/$gsl_post"
|
|
gsl_checker_war=true
|
|
continue
|
|
fi
|
|
|
|
# Set DB Post file
|
|
gsl_file_db_post="$gsl_dir_db/$gsl_post.db"
|
|
gsl__db_get_post_datas "$1"
|
|
gsl__db_compare_post_hash
|
|
|
|
gsl__post_begin
|
|
gsl__get_needed_headers
|
|
gsl__page_prepare_datas
|
|
|
|
if [[ "$gsl_post_new_hash" ]];then
|
|
unset gsl_db_post_status
|
|
if [[ -f "$gsl_srv_wip_page" ]];then
|
|
rm -f "$gsl_srv_wip_page" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"wip" \
|
|
"Delete" \
|
|
"$gsl_post_type ; $gsl_post has changed !" \
|
|
"$gsl_srv_wip_page"
|
|
gsl_checker_war=true
|
|
fi
|
|
|
|
if [[ -f "$gsl_file_db_post" ]];then
|
|
rm -f "$gsl_file_db_post" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"DB" \
|
|
"Delete" \
|
|
"file ; $gsl_post has changed !" \
|
|
"$gsl_file_db_post"
|
|
gsl_checker_war=true
|
|
fi
|
|
fi
|
|
|
|
# From COMMAND [OPT]
|
|
case "$1" in
|
|
check)
|
|
if ! [[ "$gsl_force_check" ]];then
|
|
! [[ "$gsl_post_new_hash" ]] && continue
|
|
fi
|
|
|
|
gsl__logs_print \
|
|
"$gsl_log_i" \
|
|
"Reading" \
|
|
"Post" \
|
|
"$gsl_post" \
|
|
"${PWD}"
|
|
gsl__all_checkers
|
|
;;
|
|
|
|
make)
|
|
case "$gsl_db_post_status" in
|
|
chk)
|
|
gsl__all_makers
|
|
;;
|
|
|
|
*)
|
|
if ! [[ "$gsl_post_new_hash" ]];then
|
|
# Should not be used...
|
|
[[ "$gsl_force_make" ]] \
|
|
&& gsl__all_makers \
|
|
&& continue
|
|
|
|
if [[ -f "$gsl_srv_wip_page" ]];then
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"Post" \
|
|
"Make" \
|
|
"$gsl_post already Converted" \
|
|
"$gsl_file_db_posts"
|
|
gsl_checker_war=true
|
|
continue
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
listing)
|
|
# Continue if post changed
|
|
[[ "$gsl_post_new_hash" ]] \
|
|
&& gsl__logs_print \
|
|
"$gsl_log_e" \
|
|
"Listing" \
|
|
"$gsl_listing_process" \
|
|
"file ; $gsl_post has changed !" \
|
|
"$gsl_file_db_post" \
|
|
&& continue
|
|
|
|
case "$gsl_listing_process" in
|
|
add)
|
|
echo "> Add $gsl_this_post to listing"
|
|
;;
|
|
|
|
rem)
|
|
echo "> Remove $gsl_this_post to listing"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
post-list)
|
|
case "$gsl_db_post_status" in
|
|
wip|www)
|
|
gsl_process="wip"
|
|
gsl__post_begin
|
|
gsl__get_needed_headers
|
|
gsl__page_prepare_datas
|
|
gsl__page_listing_create "$gsl_post_list"
|
|
;;
|
|
*)
|
|
gsl__logs_print \
|
|
"$gsl_log_e" \
|
|
"Post" \
|
|
"Status" \
|
|
"$gsl_db_post_status: $gsl_post not Converted" \
|
|
"$gsl_file_db_posts"
|
|
gsl_checker_err=true
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
www)
|
|
gsl_checker_war=true
|
|
case "$2" in
|
|
add)
|
|
case "$gsl_db_post_status" in
|
|
wip|www)
|
|
rsync -a --delete \
|
|
"$gsl_srv_wip_page" "$gsl_srv_www_page" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"SRV" \
|
|
"www" \
|
|
"Synced: $gsl_post_type $gsl_post" \
|
|
"$gsl_srv_www_page"
|
|
gsl__db_set_post_status www
|
|
;;
|
|
*)
|
|
gsl__logs_print \
|
|
"$gsl_log_e" \
|
|
"Post" \
|
|
"Status" \
|
|
"$gsl_db_post_status: $gsl_post not Converted" \
|
|
"$gsl_file_db_posts"
|
|
gsl_checker_err=true
|
|
;;
|
|
esac
|
|
;;
|
|
remove)
|
|
case "$gsl_post_type" in
|
|
post)
|
|
! [[ -d "$gsl_srv_www_page" ]] \
|
|
&& return
|
|
gsl_rm_c="rm -rf"
|
|
;;
|
|
page)
|
|
! [[ -f "$gsl_srv_www_page" ]] \
|
|
&& return
|
|
gsl_rm_c="rm -f"
|
|
;;
|
|
esac
|
|
$gsl_rm_c "$gsl_srv_www_page" && \
|
|
gsl__logs_print \
|
|
"$gsl_log_w" \
|
|
"SRV" \
|
|
"www" \
|
|
"REMOVED $gsl_post_type $gsl_post" \
|
|
"$gsl_srv_www_page"
|
|
gsl__db_set_post_status wip
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
#-----------------------------------------------------------------------
|
|
# --------------------
|
|
# Doing some checkings
|
|
# --------------------
|
|
#-----------------------------------------------------------------------
|
|
|
|
#=======================================================================
|
|
# Check NAME post from [OPT] ; should be from autocompletion
|
|
#=======================================================================
|
|
gsl__check_opt_post() {
|
|
if [[ `ls -1 *.gsl | grep "$1"` ]];then
|
|
gsl_this_post="$1"
|
|
else
|
|
echo "! $1 Not Found"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
#=======================================================================
|
|
# Check if posts from PWD folder
|
|
#=======================================================================
|
|
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" \
|
|
&& exit
|
|
}
|
|
|
|
#======================================================================
|
|
# Create TMP file > Get Content Post Only (after #1)
|
|
#======================================================================
|
|
gsl__post_content_only() {
|
|
gsl_tmp_post=`mktemp`
|
|
awk -v l="$gsl_post_begin" \
|
|
'NR >= l' \
|
|
"$gsl_post" \
|
|
> "$gsl_tmp_post"
|
|
}
|
|
|
|
gsl__post_begin() {
|
|
gsl_post_begin=`
|
|
awk -v m="#1" \
|
|
'$1 == m {print NR;exit}' \
|
|
"$gsl_post"`
|
|
}
|