Compare commits

...

14 Commits

Author SHA1 Message Date
8a8845d898 Merge pull request '¡Hyperling.com 2.0!' (#16) from dev into main
Reviewed-on: #16
2025-10-14 14:54:53 -07:00
65be246673 Remove idea, working fine without it. 2025-10-14 14:38:27 -07:00
eabf56ed93 Specify that this is not a TODO, just listing TODO items. 2025-10-14 14:38:01 -07:00
d55b13ecbf Add more comments. 2025-10-14 14:03:28 -07:00
cc8a7710a1 Enhance comment on WHY there is nothing to do. :) 2025-10-14 14:01:52 -07:00
ad83090b05 Add further comments for future self and others. 2025-10-14 14:01:08 -07:00
684c237ac1 Remove excess exit and provide output var in case it's helpful in later debugging. 2025-10-14 13:57:33 -07:00
23c0090a47 Only run apt install command once. 2025-10-14 13:51:58 -07:00
e57ec6de50 Add automatic restart if a primary program is updated. 2025-10-14 13:47:38 -07:00
c790dd6736 Reword the output. 2025-10-14 13:41:46 -07:00
6e3666cea2 Begin watching git's status too, not just the grep status of not already being up to date. Add more conditional branches so that errors are logged properly. 2025-10-14 13:37:55 -07:00
7379df38de Make output even more succint. Remove duplicate cd command. 2025-10-14 13:11:37 -07:00
2a915fec69 Fancify script. 2025-10-14 13:06:21 -07:00
fa0e9907ee Use full executable path. Move the ps information out of the loop to prevent log spam. 2025-10-14 13:06:11 -07:00
4 changed files with 68 additions and 31 deletions

View File

@@ -25,7 +25,7 @@ cd www
Then in a web browser, navigate to `localhost:8080`. Then in a web browser, navigate to `localhost:8080`.
## TODO ## TODO Items
All goals are currently completed. All goals are currently completed.

View File

@@ -4,29 +4,63 @@
# project so that docker container can do periodic git pulls rather than having # project so that docker container can do periodic git pulls rather than having
# to reload /rebuild the container each time a release is pushed out. # to reload /rebuild the container each time a release is pushed out.
## Setup ##
DIR="$(dirname -- "${BASH_SOURCE[0]}")" DIR="$(dirname -- "${BASH_SOURCE[0]}")"
PROG="$(basename -- "${BASH_SOURCE[0]}")" PROG="$(basename -- "${BASH_SOURCE[0]}")"
cd $DIR
DIR="`pwd`"
NAME="'$PROG'"
function reload-project { function log {
## Kill node.js which will complete run.sh and restart any Docker containers. echo -e "`date` : $NAME - $1"
#pkill node
# Do not kill program, just use the new files and if run.sh or main.js were
# changed then they can get reloaded manually or by the nightly backup.
echo "Project reloaded successfully!"
} }
echo "*** Running '$DIR/$PROG' @ `date` ***" function kill-project {
cd $DIR # Kill node.js which will complete run.sh and restart any Docker containers.
# This is more intended towards Development and Stage sites since Production
# will only see git changes when a pull request is manually completed.
log "Stopping continuous processes!"
pkill node
}
function reload-project {
# Nothing to do, run.sh and main.js automatically uses the latest files.
log "Project reloaded successfully!"
}
## Main ##
# Pull any updates, and if the project is already up to date, exit successfully. # Pull any updates, and if the project is already up to date, exit successfully.
git pull | grep -v "up to date" output="`git pull`"
status="$?" git_status="$?"
echo "* Pull status is '$status'."
if [[ $status != 0 ]]; then echo "$output" | grep -v "up to date"
echo "* Site is already up to date, exiting." grep_status="$?"
exit 0
else log "Pull status is '$git_status', checking for changes is '$grep_status'."
# Check whether the continuously running jobs have been updated.
echo "$output" | grep "main.js"
main_changed="$?"
echo "$output" | grep "run.sh"
run_changed="$?"
# Determine where we've landed and whether we need to do anything.
if [[ $git_status != 0 ]]; then
log "*** ERROR: Git reported a failure! ***"
exit 1
elif [[ $git_status == 0 && ($main_changed == 0 || $run_changed == 0) ]]; then
log "Either main ('$main_changed'), or run ('$run_changed') were changed!"
kill-project
elif [[ $git_status == 0 && $grep_status == 0 ]]; then
reload-project reload-project
elif [[ $git_status == 0 && $grep_status != 0 ]]; then
log "Nothing to do. '$output'"
else
log "*** WARNING: Unknown Situation ***"
fi fi
## Success! ##
exit 0 exit 0

View File

@@ -6,11 +6,6 @@
} }
$show_pics = $GLOBALS["SHOW_BANNER_PICS"]; $show_pics = $GLOBALS["SHOW_BANNER_PICS"];
$banner_width = $show_pics ? 6 : 12; $banner_width = $show_pics ? 6 : 12;
// TBD / TODO:
// Check if user has vertical screen?
// Is that possible in this environment?
//$image_width = $vertical_screen ? 6 : 3;
?> ?>
<a href='/about/'> <a href='/about/'>
<div class="row"> <div class="row">

28
run.sh
View File

@@ -6,7 +6,12 @@
DIR="$(dirname -- "${BASH_SOURCE[0]}")" DIR="$(dirname -- "${BASH_SOURCE[0]}")"
PROG="$(basename -- "${BASH_SOURCE[0]}")" PROG="$(basename -- "${BASH_SOURCE[0]}")"
echo "$DIR/$PROG"
# Ensure we are executing from this file's directory.
cd $DIR
DIR="`pwd`"
NAME="'$DIR/$PROG'"
echo $NAME
## Functions ## ## Functions ##
@@ -27,13 +32,15 @@ function log {
echo -e "`date` - $message" echo -e "`date` - $message"
} }
log "Local process information:"
ps $$
function check_main { function check_main {
if [[ -z "$1" ]]; then if [[ -z "$1" ]]; then
echo "ERROR: Subprocess name was not provided. $1" echo "ERROR: Subprocess name was not provided. $1"
exit 0 exit 0
fi fi
log "Subprocess '$1' checking if main process is still running..." log "Subprocess '$1' checking if main process is still running..."
ps $$ ps $$ >/dev/null
status=$? status=$?
if [[ $status != 0 ]]; then if [[ $status != 0 ]]; then
log "Process '$$' not found, '$1' from '$DIR/$PROG' exiting." log "Process '$$' not found, '$1' from '$DIR/$PROG' exiting."
@@ -62,9 +69,6 @@ fi
## Build Environment ## ## Build Environment ##
# Ensure we are executing from this file's directory.
cd $DIR
sudo="" sudo=""
if [[ -z $LOGNAME ]]; then if [[ -z $LOGNAME ]]; then
LOGNAME="`whoami`" LOGNAME="`whoami`"
@@ -75,25 +79,29 @@ if [[ $LOGNAME != "root" ]]; then
fi fi
log "Check if any system dependencies need installed." log "Check if any system dependencies need installed."
progs=""
if [[ ! `which php` ]]; then if [[ ! `which php` ]]; then
echo "- Installing PHP" echo "- Installing PHP"
$sudo apt-get install -y php-cli progs="$progs php-cli"
fi fi
if [[ ! `which node` ]]; then if [[ ! `which node` ]]; then
echo "- Installing Node" echo "- Installing Node"
$sudo apt-get install -y nodejs progs="$progs nodejs"
fi fi
if [[ ! `which npm` ]]; then if [[ ! `which npm` ]]; then
echo "- Installing NPM" echo "- Installing NPM"
$sudo apt-get install -y npm progs="$progs npm"
fi fi
if [[ ! `which curl` ]]; then if [[ ! `which curl` ]]; then
echo "- Installing Curl" echo "- Installing Curl"
$sudo apt-get install -y curl progs="$progs curl"
fi fi
if [[ ! `which ps` ]]; then if [[ ! `which ps` ]]; then
echo "- Installing PS" echo "- Installing PS"
$sudo apt-get install -y procps progs="$progs procps"
fi
if [[ -n "$progs" ]]; then
$sudo apt-get install -y $progs
fi fi
# Directories and allowed page types are executable, others are not. # Directories and allowed page types are executable, others are not.