#!/bin/bash # Version: 0.0.2 # file: gsl # Folder: /usr/local/bin # By echolib # License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 #======================================================================= # Tool: Check needed file and sourcee if asked #======================================================================= if__command() { ! [[ `command -v $1` ]] \ && echo -e "$I_Red Missing $1 command" \ && exit 1 } gsl__if_file() { if ! [[ -f "$1" ]];then echo "! Missing file: $1" exit 1 fi case "$2" in source) source "$1" || exit 1 ;; read) cat "$1" ;; post) gsl_this_post="$1" ;; esac } # Get conf gsl__if_file "/etc/gsl/gsl.conf" source # Help & Logs gsl__if_file "$gsl_dir_scripts/gsl__log_manager" source case "$1" in help|--help|-h) clear case "$2" in "") gsl__if_file "$gsl_dir_helps/gsl_help" read ;; new) gsl__if_file "$gsl_dir_helps/gsl_infos_new_website" read ;; install) gsl__if_file "$gsl_dir_helps/gsl_help_install" read ;; write|-w) gsl__if_file "$gsl_dir_helps/gsl_help_write_post" read ;; esac exit ;; readme) clear gsl__if_file "/var/lib/gsl/README.md" read exit ;; log|-L) [[ -z `grep '[^[:space:]]' "$gsl_file_logs" 2>/dev/null` ]] \ && echo "# No logs to show. File is empty." \ && exit while test "$2" do case "$2" in clean|-C) gsl_date_logs=`date +%F-%H-%M-%S` mv "$gsl_file_logs" "$gsl_dir_logs/$gsl_date_logs.gsl.log" rm -f "$gsl_file_logs" printf '%s %s %s\n' \ "# Logs saved to" \ "$gsl_dir_logs/$gsl_date_logs.gsl.log" \ "and cleaned" exit ;; -s) gsl_logs_last_session=true ;; -e) gsl_logs_err=true ;; -i) gsl_logs_inf=true ;; -w) gsl_logs_war=true ;; *) gsl_logs_search="$2" ;; esac shift done gsl__logs_show exit ;; version|-v) awk 'NR==2 {print "# Installed:",$3}' "/usr/local/bin/$app_name" exit ;; -vv) v_cur=`awk 'NR==2 {print $3}' "/usr/local/bin/$app_name"` echo -n "# $app_name Current: $v_cur | " if__command curl v_onl=`curl -s "$repo" | awk 'NR==2 {print $3}'` echo -ne "Online: $v_onl\n" exit ;; esac #======================================================================= # Checking Dependancies #======================================================================= # Get Tools gsl__if_file "/var/lib/gsl/scripts/gsl__tools" source # Check/Create Files and Folders gsl__create_ff gsl__find_domain gsl__if_file "$gsl_dir_scripts/gsl__auth_manager" source gsl__authors_list check || exit 1 gsl__if_file "$gsl_dir_scripts/gsl__new_website" source gsl__if_file "$gsl_dir_scripts/gsl__post_checkers" source gsl__if_file "$gsl_dir_scripts/gsl__post_manager" source gsl__if_file "$gsl_dir_scripts/gsl__db_manager" source gsl__if_file "$gsl_dir_scripts/gsl__post_makers" source gsl__if_file "$gsl_dir_scripts/gsl__page_creator" source gsl__if_file "$gsl_dir_scripts/gsl__do_commons" source #======================================================================= # Main #======================================================================= case "$1" in author|-A) gsl__authors_list check || exit 1 case "$2" in "") gsl__authors_list ;; add) gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "author $2 for domain $gsl_find_domain" \ "$gsl_file_auth_ndd" gsl__authors_add gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "author $2 for domain $gsl_find_domain" \ "$gsl_file_auth_ndd" ;; remove) gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "author $2 for domain $gsl_find_domain" \ "$gsl_file_auth_ndd" gsl__authors_remove gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "author $2 for domain $gsl_find_domain" \ "$gsl_file_auth_ndd" ;; esac ;; new|-N) gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "New Website" \ "$gsl_dir_scripts/gsl__new_website" gsl__new_website gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "New Website" \ "$gsl_dir_scripts/gsl__new_website" [[ -f "$gsl_file_db_domains" ]] && \ [[ -d "$gsl_dir_user_posts" ]] \ && cd "$gsl_dir_user_posts" \ && gsl author add ;; edit|-E) ! [[ "$2" ]] \ && echo "! Missing argument: post [FILE]" \ && exit 1 gsl__if_file "$2" post if ! [[ "$EDITOR" ]];then if [[ "$3" ]];then if__command "$3" EDITOR="$3" else if__command nano EDITOR=`which nano` fi fi gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "edit $gsl_this_post with $EDITOR" \ "$PWD/$gsl_this_post" gsl__get_sum "$PWD/$gsl_this_post" gsl__logs_print \ "$gsl_log_i" \ "Post" \ "edit" \ "$gsl_this_post > Hash: $gsl_post_hash | Size: $gsl_post_size" \ "$PWD/$gsl_this_post" gsl_post_hash_old=$gsl_post_hash $EDITOR $PWD/$gsl_this_post gsl__get_sum "$PWD/$gsl_this_post" if (( $gsl_post_hash != $gsl_post_hash_old ));then gsl_log_infos="NEW > Hash: $gsl_post_hash | Size: $gsl_post_size" gsl_log_level="$gsl_log_w" else gsl_log_infos="Unchanged" gsl_log_level="$gsl_log_i" fi gsl__logs_print \ "$gsl_log_level" \ "Post" \ "edit" \ "$gsl_this_post > $gsl_log_infos" \ "$PWD/$gsl_this_post" gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "edit $gsl_this_post with $EDITOR" \ "$PWD/$gsl_this_post" ;; db) ! [[ "$2" ]] \ && echo "! Missing argument: post [FILE]" \ && exit 1 gsl__if_file "$2" post [[ -f "$gsl_dir_db/$gsl_this_post.db" ]] \ && cat -n "$gsl_dir_db/$gsl_this_post.db" \ || echo "! No DB yet for $gsl_this_post. Check it first." exit ;; check|-C) gsl__check_nbr_posts case "$2" in -F) gsl_force_check=true [[ "$3" ]] && gsl__if_file "$3" post ;; *) [[ "$2" ]] && gsl__if_file "$2" post ;; esac gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "check Post for domain $gsl_find_domain" \ "$PWD" gsl__loop_posts check gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "check Post for domain $gsl_find_domain" \ "$PWD" ;; sync|-s) gsl_srv_wip="$gsl_site_server/$gsl_site_ndd/wip" gsl_srv_www="$gsl_site_server/$gsl_site_ndd/www" case "$2" in "") gsl__srv_sync "$gsl_srv_wip" gsl__srv_sync "$gsl_srv_www" ;; www) gsl__srv_sync "$gsl_srv_www" ;; wip) gsl__srv_sync "$gsl_srv_wip" ;; *) echo "! Bad Argument: $2 ? OPT=www/wip/''" ;; esac exit ;; make|-M) gsl__check_nbr_posts gsl_process="wip" gsl_post_list="Add" case "$2" in -F) gsl_force_make=true [[ "$3" ]] && gsl__if_file "$3" post ;; *) [[ "$2" ]] && gsl__if_file "$2" post ;; esac gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "make Post for domain $gsl_find_domain" \ "$PWD" gsl sync wip gsl__loop_posts make gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "make Post for domain $gsl_find_domain" \ "$PWD" ;; post-list) case "$2" in add) gsl_post_list="Add" ;; pin) gsl_post_list="Pin" ;; *) echo "! Bad Argument: $2" exit 1 ;; esac ! [[ "$3" ]] \ && echo "! Missing argument: post [FILE]" \ && exit 1 gsl__if_file "$3" post gsl__check_nbr_posts gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "$1 ; $gsl_post_list $3 from domain $gsl_find_domain" \ "$gsl_dir_domain_tpl/last-posts-list.html" gsl__loop_posts post-list gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "$1 ; $gsl_post_list $3 from domain $gsl_find_domain" \ "$gsl_dir_domain_tpl/last-posts-list.html" ;; www) ! [[ "$2" ]] \ && echo "! Missing argument: OPT=add/remove" \ && exit 1 if__command rsync gsl_www_act="$2" case "$2" in add) gsl_ask="! Put online ALL wip posts (y|N)? " ;; remove) gsl_ask="! REMOVE ALL www posts (yes|N)? " ;; *) echo "! Bad argument: $2 ? OPT=add/remove" exit 1 ;; esac ! [[ "$3" ]] \ && echo "! Missing argument: post [FILE]/all" \ && exit 1 case "$3" in all) read -rp "$gsl_ask" gsl_ask_www case "$gsl_ask_www" in YES|yes|Yes) true ;; *) echo "# Abandon" exit 1 ;; esac ;; =) gsl__if_file "$3" post ;; esac gsl__check_nbr_posts gsl__logs_print \ "$gsl_log_i" \ "Starting" \ "Process" \ "$1 ; $2 from domain $gsl_find_domain" \ "$gsl_site_server" gsl sync www gsl__loop_posts www "$2" gsl__logs_print \ "$gsl_log_i" \ "Stopping" \ "Process" \ "$1 ; $2 from domain $gsl_find_domain" \ "$gsl_site_server" ;; *) gsl help exit ;; esac gsl log -s gsl__logs_check