#===================================================================
# Automatically build and publish this folder's content, only.
# This gallery has 121 images and 88 notes at last count (jun25).
#
# This script publishes the gallery on its host server. See
# ./_generate.sh for commands used to build the gallery itself.
#
# This Unix Bash script is demo only: it requires a common.sh (not
# included), and on Windows either Cygwin, WSL, or DOS translation.
#
# Caution: requires Python 3.8+ on dev host today (~/.bash_profile).
#
# Launch this script from Terminal in its own folder, with:
# cd $W/Posts/Current/Complete/trnpix
# bash _publish.sh
#
# Also run by $W/_admin/BUILD-THUMBSPAGE-CLIENTS/_PUBLISH.sh, to
# update all thumbspage (TP) external clients in a single step.
#
# See also:
# ./_generate.sh runs the thumbspage commands used to build
# this folder's 3 galleries, with alternative index layouts.
#
# TP's docetc/batchnotes.py collects .note files for spellchecks;
# it's auto-run here, as it's referenced as a demo in TP docs.
#
# TP's build/insert-analytics.py adds analytics JS code to HTML
# pages, after generation and before zip+upload.
#
#-------------------------------------------------------------------
# Recent updates, latest last:
#
# - TP 2.3 allows console inputs to be provided with command
# args, instead of <<-EOF; see the new build command(s).
#
# - TP 2.3 allows popups' colors to deviate from the viewer-page
# defaults; e.g., popupFgColor=\'#ddddd\' selects muted-white text.
#
# - The TP build command is now split off to subscript _generate.sh,
# for both local testing sans uploads, and TP's examples/trnpix.
#
# - Now publishes 2 alternative index pages with crosslinks:
# fixed and dynamic layout. See _generate.sh for the builds.
#
# - Now publishes a 3rd index-page variant: thumbs-only mode;
# website links now prefer dynamic over both fixed and this.
#
# - tan => wheat for popups fg text; tan seems generally too
# dark, though this can vary per display, setting, and user.
#
# - _HEADER: hardcoded UA analytics tag/code => replacement key,
# so picks up GA4. FOOTER: new, shorter link words from site.
#
# - As a provisional experiment, add analytics to all trnpix image
# viewer pages (not just indexes); TP emits replacement keys.
#
# - thumbspage/examples/trnpix/_generate.sh runs _generate.sh here
# but not _publish.sh here, which results in .html files without
# analytics in $W/UNION, enen though they have analytics at live
# site. Must rerun this _publish.sh after a thumbspage publish.
#
# - Dec23: moved analytics tag below in _HEADER.html. Else
#
may be missed, causing "(not set)" page titles in ga4
# reports (though timing dependent, and page-path reports fine).
# The same should be done for viewer pages--and was in TP 3.0.
#
# - Jun25: rebuild with thumbspage 3.0; add a _viewable/ subfolder
# sans index.html so vetters can see all content; insert Apache
# code in _viewable/'s .htaccess to display its .html files+ as
# unrendered plain text, and nicely via showcode.py; and fix a
# nasty Bash issue triggered by new spaces in image filenames.
#
# TP 3.0 makes dynamic index layout the preset default and mods
# some config presets per common practice; see _generate.sh.
#===================================================================
# Common defs, aliases, scp/ssh functions with keys (yours will vary)
source ~/MY-STUFF/Websites/_admin/BUILD-THUMBSPAGE-CLIENTS/common.sh
# Save zip to $C/thumbspage/_private?
SaveInTP=y
#-----------------------------------------------------------------
# GALLERY: build gallery, collect note files for spellcheck
#-----------------------------------------------------------------
# --See this folder's _generate.sh for gallery build commands--
# Run new-style gallery builds, now in a subscript
bash _generate.sh
# Run note batcher in '.' for spellcheck, also a thumbspage 2.3 demo
py3 $C/thumbspage/docetc/batchnotes.py
#-----------------------------------------------------------------
# WEBSITE: add analytics, make _viewable/, build website image
#-----------------------------------------------------------------
# Add analytics to index pages, no longer hardcoded in _HEADER used by all
indexpages='index.html index-dynamic.html index-thumbsonly.html'
for indexpage in $indexpages; do
py3 $M/insert-analytics.py $indexpage
done
# Add analytics to viewer pages too
# [jun25] now fails - filenames grew spaces and bash splits on them:
# for viewpage in $(find . -path './_thumbspage*/*.html' -print); do
# py3 $M/insert-analytics.py $viewpage
# done
#
# Instead, use gross Bash hackery to allow spaces in filenames from find.
# Not available on macos: readarray -d $'\0' files < <(find ... -print0).
# Would be longer but _much_ more coherent if coded in python (see os.walk).
while IFS= read -r -d $'\0' file; do
py3 $M/insert-analytics.py "$file"
done < <(find . -path './_thumbspage*/*.html' -print0)
# [jun25] Copy content to a viewable subfolder (sans index.htlm(s)).
# May be able to show ".htaccess" and "index.py" but "_" rename is simple.
echo "Making _viewable/"
rm -rf _viewable
mkdir _viewable
cp -R -p *.txt *.sh *.html _htaccess _thumbspage* \
*.jpg *.JPG *.png *.gif \
*.note *.py *.original _viewable
mv _viewable/index.html _viewable/_index.html
mv _viewable/index-dynamic.html _viewable/_index-dynamic.html
mv _viewable/index-thumbsonly.html _viewable/_index-thumbsonly.html
# [mar22] Copy Apache .htaccess for nicer index displays of subfolders themselves.
# Renaming to .htaccess here enables them in the subfolders to which they're copied.
subfolders='_thumbspage _thumbspage-dynamic _thumbspage-thumbsonly _viewable'
for subfolder in $subfolders; do
cp -p _htaccess $subfolder/.htaccess
done
# [jun25] Extend Apache _viewable/.htaccess to serve .html files in that folder
# (only) as plain text. "AddType text/plain .html" not required if rewriting.
# The regex is from main .htaccess: here, may be overkill and requires the "R".
apacheinsert='
# Added by _publish.sh
# Serve+show html and other files here and below as plain text, nicely
rewritecond %{HTTP_HOST} ^www.learning-python.com$ [OR]
rewritecond %{HTTP_HOST} ^learning-python.com$
rewriterule ^(?!(?:cgi\/|.*robots.txt))(_htaccess|.*\.(?:py|txt|pyw|sh|c|h|note|html))$ "https\:\/\/learning-python\.com\/cgi\/showcode\.py\?name\=trnpix/_viewable/$1" [R,NC]
'
hts='.htaccess _htaccess'
for ht in $hts; do
echo -e "$apacheinsert" >> _viewable/$ht
done
# Build local website image (ymmv)
cd $W
py3 _PUBLISH.py | tail -n 20
#-----------------------------------------------------------------
# UPLOAD: zip by ziptools, upload zip by scp, unzip at site by ssh
#-----------------------------------------------------------------
# Combo folder made by _PUBLISH.py
cd UNION
# Fix file permissions for web access
find trnpix -type d -exec chmod 755 '{}' \;
find trnpix -type f -exec chmod 644 '{}' \;
# Zip
py3 $Z/zip-create.py trnpix.zip trnpix -skipcruft | tail -n 20
# Upload
SCP trnpix.zip htdocs
# Unzip
SSH <<-EOF
cd htdocs
rm -rf trnpix
unzip -d . trnpix.zip
rm trnpix.zip
exit
EOF
# Save
if [ $SaveInTP == 'y' ]
then
mv trnpix.zip $C/thumbspage/_private/trnpix--$stamp.zip
else
rm trnpix.zip
fi