mirror of
https://git.fsfe.org/FSFE/fsfe-local-build.git
synced 2026-04-18 10:23:05 +02:00
enable normal build of multiple files at once (still not folders); improve and formalise output messages with colours
This commit is contained in:
184
fsfe-preview.sh
184
fsfe-preview.sh
@@ -25,6 +25,20 @@
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
# Coloured and tagged output
|
||||
function echo_ERR {
|
||||
echo -e '\033[0;31m'"[ERROR] $1"'\033[0m'
|
||||
}
|
||||
function echo_SUC {
|
||||
echo -e '\033[0;32m'"[SUCCESS] $1"'\033[0m'
|
||||
}
|
||||
function echo_WARN {
|
||||
echo -e '\033[0;33m'"[WARNING] $1"'\033[0m'
|
||||
}
|
||||
function echo_INFO {
|
||||
echo -e '\033[0;37m'"[INFO] $1"'\033[0m'
|
||||
}
|
||||
|
||||
# Check dependencies (stolen from build_main.sh)
|
||||
deperrors=''
|
||||
for depend in realpath rsync xsltproc xmllint sed find egrep grep wc make tee date iconv; do
|
||||
@@ -50,7 +64,7 @@ source "$ROOT"/config.cfg
|
||||
# Help listing
|
||||
if [ "$1" = "" ]; then
|
||||
self=$(basename $0)
|
||||
echo "No parameters or variables given!"
|
||||
echo_WARN "No parameters or variables given!"
|
||||
echo
|
||||
echo "Usage: "
|
||||
echo
|
||||
@@ -75,11 +89,11 @@ LOC_trunk_dev=$(echo $LOC_trunk_dev | sed 's|/$||')
|
||||
# Pure copy
|
||||
if [ "$1" = "--copy" ]; then
|
||||
numargs=$(($# - 1))
|
||||
echo "[INFO] Starting a plain mass copy with $numargs files..."
|
||||
echo_INFO "Starting a plain mass copy with $numargs file(s)..."
|
||||
for ((i=1; i <= $numargs; i++)); do
|
||||
SRC_full=$(realpath $2)
|
||||
DST_full=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_out|")
|
||||
echo "[INFO] Copying $SRC_full to $DST_full..."
|
||||
echo_INFO "Copying $SRC_full to $DST_full..."
|
||||
if [ -d "$SRC_full" ] && [ -e "$DST_full" ]; then
|
||||
rm -rf "$DST_full"
|
||||
cp -R $SRC_full $DST_full
|
||||
@@ -89,83 +103,101 @@ if [ "$1" = "--copy" ]; then
|
||||
|
||||
shift
|
||||
done
|
||||
echo "[SUCCESS] Copying finished. Files should be visible via the local webserver now."
|
||||
echo_SUC "Copying finished. Files should be visible via the local webserver now."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SRC_rel=$1 # e.g. index.en.xhtml
|
||||
SRC_full=$(realpath $SRC_rel) # Full path to source file
|
||||
|
||||
# CHECK whether the source file is located in LOC_trunk
|
||||
if [ ! $(echo $SRC_full | grep "$LOC_trunk") ]; then
|
||||
echo "[ERROR] Given source file is not part of \$LOC_trunk (currently set to \"$LOC_trunk\"). Please only build files which reside in or below this directory. Aborting now."
|
||||
exit 1
|
||||
# Run through number of files given as arguments
|
||||
numargs=$#
|
||||
echo_INFO "Building $numargs file(s)"
|
||||
if [ $numargs -gt 1 ]; then
|
||||
echo
|
||||
fi
|
||||
for ((i=1; i <= $numargs; i++)); do
|
||||
SRC_rel=$1 # e.g. index.en.xhtml
|
||||
SRC_full=$(realpath $SRC_rel) # Full path to source file
|
||||
|
||||
# CHECK whether the source file is a directory (only --copy allowed)
|
||||
if [ -d "$SRC_full" ]; then
|
||||
echo "[ERROR] The given file \"$SRC_full\" is a directory. Those can only be copied by using --copy as a parameter."
|
||||
echo "NOTE: Using --copy won't build potential .xhtml files inside a directory. If you have this case, please first copy an empty directory and then build the .xhtml files inside them."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# TEST if a DEV SVN directory is used. If yes, copy clean file to this Dir
|
||||
if [ "$LOC_trunk_dev" != "" ]; then
|
||||
SRC_full_dev=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_trunk_dev|")
|
||||
echo "[INFO] A \"dirty\" Development SVN directory ($LOC_trunk_dev) is being used. Copy file from clean SVN directory ($LOC_trunk) to Development directory..."
|
||||
cp $SRC_full $SRC_full_dev # copy file from clean SVN to dev/dirty SVN
|
||||
SRC_full=$SRC_full_dev
|
||||
LOC_trunk=$LOC_trunk_dev
|
||||
fi
|
||||
|
||||
echo "[INFO] Using file $SRC_full as source..."
|
||||
|
||||
### TRANSFORM XHTML file path
|
||||
DST_full=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_out|") # replace SVN directory by build/HTTP destination
|
||||
|
||||
### BUILD/COPY FILE depending on file extension
|
||||
ftype=${SRC_full##*.} # get extension of file
|
||||
ftype=$(echo "$ftype" | tr '[:upper:]' '[:lower:]')
|
||||
ftype_build="xhtml" # file types which have to be built
|
||||
|
||||
if [[ "$ftype" == @($ftype_build) ]]; then # XHTML file
|
||||
DST_full=$(echo $DST_full | sed -E "s/$ftype_build/html/") # Replace xhtml by html
|
||||
echo "[INFO] XHTML file detected. Going to build into $DST_full ..."
|
||||
|
||||
xmllint --noout "$SRC_full" || (echo; echo "[ERROR] Syntax error in $SRC_full. Error message above. Please fix!"; exit 1)
|
||||
if [[ "$?" != "0" ]]; then exit 1; fi
|
||||
|
||||
$LOC_trunk/build/build_main.sh process_file $SRC_full > $DST_full
|
||||
|
||||
else # just copy file
|
||||
echo "[INFO] File type ($ftype) is detected as not to be built. Just copying it to $DST_full ..."
|
||||
cp $SRC_full $DST_full
|
||||
fi
|
||||
|
||||
|
||||
### START WEBSERVER if necessary
|
||||
if [ "$HTTPD" == "python" ]; then # python
|
||||
if [ ! $(pgrep -f "pywebserver-fsfe.py $LOC_out") ]; then
|
||||
echo "[INFO] Starting $HTTPD webserver"
|
||||
nohup "$ROOT/pywebserver-fsfe.py" "$LOC_out" "$HTTPD_port" > "$ROOT"/pywebserver-fsfe.log 2>&1 &
|
||||
else
|
||||
echo "[INFO] $HTTPD webserver already seems to be running."
|
||||
# CHECK whether the source file is located in LOC_trunk
|
||||
if [ ! $(echo $SRC_full | grep "$LOC_trunk") ]; then
|
||||
echo_ERR "Given source file is not part of \$LOC_trunk (currently set to \"$LOC_trunk\"). Please only build files which reside in or below this directory. Aborting now."
|
||||
exit 1
|
||||
fi
|
||||
elif [ "$HTTPD" == "lighttpd" ]; then
|
||||
if [ ! $(pgrep lighttpd) ]; then # lighttpd
|
||||
echo "[INFO] Starting $HTTPD webserver"
|
||||
/usr/sbin/lighttpd -f "$HTTPD_conf"
|
||||
else
|
||||
echo "[INFO] $HTTPD webserver already seems to be running."
|
||||
fi
|
||||
elif [ "$HTTPD" == "" ]; then # empty variable
|
||||
echo "[ERROR] No webserver specified. Please define variable HTTPD in config.cfg. Aborting now."
|
||||
exit 1
|
||||
else # something custom
|
||||
echo "[WARNING] Unknown webserver defined. Please check variable HTTPD in config.cfg."
|
||||
fi
|
||||
|
||||
### SHOW RESULTS
|
||||
echo
|
||||
DST_rel=$(echo $DST_full | sed "s|$LOC_out||") # relative path
|
||||
echo "[SUCCESS] Finished. File can be viewed at http://localhost:5080$DST_rel"
|
||||
# CHECK whether the source file is a directory (only --copy allowed)
|
||||
if [ -d "$SRC_full" ]; then
|
||||
echo_ERR "The given file \"$SRC_full\" is a directory. Those can only be copied by using --copy as a parameter."
|
||||
echo_ERR "NOTE: Using --copy won't build potential .xhtml files inside a directory. If you have this case, please first copy an empty directory and then build the .xhtml files inside them."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# TEST if a DEV SVN directory is used. If yes, copy clean file to this Dir
|
||||
if [ "$LOC_trunk_dev" != "" ]; then
|
||||
SRC_full_dev=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_trunk_dev|")
|
||||
echo_INFO "A \"dirty\" Development SVN directory ($LOC_trunk_dev) is being used. Copy file from clean SVN directory ($LOC_trunk) to Development directory..."
|
||||
cp $SRC_full $SRC_full_dev # copy file from clean SVN to dev/dirty SVN
|
||||
SRC_full=$SRC_full_dev
|
||||
LOC_trunk=$LOC_trunk_dev
|
||||
fi
|
||||
|
||||
echo_INFO "Using file $SRC_full as source..."
|
||||
|
||||
### TRANSFORM XHTML file path
|
||||
DST_full=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_out|") # replace SVN directory by build/HTTP destination
|
||||
|
||||
### BUILD/COPY FILE depending on file extension
|
||||
ftype=${SRC_full##*.} # get extension of file
|
||||
ftype=$(echo "$ftype" | tr '[:upper:]' '[:lower:]')
|
||||
ftype_build="xhtml" # file types which have to be built
|
||||
|
||||
if [[ "$ftype" == @($ftype_build) ]]; then # XHTML file
|
||||
DST_full=$(echo $DST_full | sed -E "s/$ftype_build/html/") # Replace xhtml by html
|
||||
echo_INFO "XHTML file detected. Going to build into $DST_full ..."
|
||||
|
||||
xmllint --noout "$SRC_full" || (echo; echo "Syntax error in $SRC_full. Error message above. Please fix!"; exit 1)
|
||||
if [[ "$?" != "0" ]]; then exit 1; fi
|
||||
|
||||
$LOC_trunk/build/build_main.sh process_file $SRC_full > $DST_full
|
||||
|
||||
else # just copy file
|
||||
echo_INFO "File type ($ftype) is detected as not to be built. Just copying it to $DST_full ..."
|
||||
cp $SRC_full $DST_full
|
||||
fi
|
||||
|
||||
|
||||
### START WEBSERVER if necessary
|
||||
if [ "$HTTPD" == "python" ]; then # python
|
||||
if [ ! $(pgrep -f "pywebserver-fsfe.py $LOC_out") ]; then
|
||||
echo_INFO "Starting $HTTPD webserver"
|
||||
nohup "$ROOT/pywebserver-fsfe.py" "$LOC_out" "$HTTPD_port" > "$ROOT"/pywebserver-fsfe.log 2>&1 &
|
||||
else
|
||||
echo_INFO "$HTTPD webserver already seems to be running."
|
||||
fi
|
||||
elif [ "$HTTPD" == "lighttpd" ]; then
|
||||
if [ ! $(pgrep lighttpd) ]; then # lighttpd
|
||||
echo_INFO "Starting $HTTPD webserver"
|
||||
/usr/sbin/lighttpd -f "$HTTPD_conf"
|
||||
else
|
||||
echo_INFO "$HTTPD webserver already seems to be running."
|
||||
fi
|
||||
elif [ "$HTTPD" == "" ]; then # empty variable
|
||||
echo_ERR "No webserver specified. Please define variable HTTPD in config.cfg. Aborting now."
|
||||
exit 1
|
||||
else # something custom
|
||||
echo_WARN "Unknown webserver defined. Probably you won't be able to see the file in your browser. Building it anyway. Please check variable \"HTTPD\" in config.cfg."
|
||||
fi
|
||||
|
||||
### SHOW RESULTS
|
||||
DST_rel=$(echo $DST_full | sed "s|$LOC_out||") # relative path
|
||||
echo_SUC "Finished. File can be viewed at http://localhost:5080$DST_rel"
|
||||
|
||||
if [ $numargs -gt 1 ]; then
|
||||
echo "++++++++++++++++++++++++++++++++++"
|
||||
fi
|
||||
|
||||
shift
|
||||
done
|
||||
|
||||
if [ $numargs -gt 1 ]; then
|
||||
echo
|
||||
echo_SUC "$numargs files have been processed. Preview links to each file can be found individually above."
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user