initial commit

This commit is contained in:
Jose Falanga 2025-09-08 17:38:31 -03:00
commit 9df80bf3d3
62 changed files with 3401 additions and 0 deletions

159
arise Normal file
View file

@ -0,0 +1,159 @@
#!/bin/bash
######################################
# ARISE
# https://github.com/spectrasecure/arise
arise_version="1.1.0"
######################################
##############################################################
# Begin main script function
# Don't edit below this line unless you know what you're doing
##############################################################
cd "$(dirname $0)"
# Set the site config directories. Don't touch this-- changing the config location is not supported at this time
config="arise-out/config"
source arise-source/config/arise.conf
# Check if we're running a current version of bash before potentially causing code that won't run properly on ancient bash versions
[ "$BASH_VERSINFO" -lt 5 ] && echo -e 'ERROR: Arise requires Bash version 5 or greater to run. Please install a newer version of Bash or ensure that you are using the newest version installed on your computer.\n\nYour current version of Bash is: '"$BASH_VERSINFO"'\n\nYou can verify the current running version of Bash by running the following command: echo "$BASH_VERSINFO"' && exit 1
# Makes sure that our paths have or don't have a '/' as expected regardless of user input.
## Favicon should have a '/' at the start of the path.
[[ $favicon != '' ]] && [[ ${favicon:0:1} != '/' ]] && favicon='/'"$favicon"
## Base URL should not have a '/' at the end.
[[ ${base_url: -1} == '/' ]] && base_url=${base_url::-1}
# Source functions
for FILE in lib/functions/inline/* ; do [[ $FILE == *.sh ]] && source $FILE ; done
for FILE in lib/functions/subshell/* ; do [[ $FILE == *.sh ]] && source $FILE ; done
# Display our pretty logo no matter what when the program is run :)
arise_logo
# Set default build settings
force_overwrite=false
keep_source=false
# Read our arguments and set the build mode for processing. Display help if an invalid option is made.
if [[ $@ == "build" ]]; then
arise_build="full"
echo "Starting site deploy. Building full site."
elif [[ $@ == "build -k" ]]; then
arise_build="full"
keep_source=true
echo "Starting site deploy. Building full site. Source .md files will be retained in the final output."
elif [[ $@ == "build -f" ]]; then
arise_build="full"
echo "Starting site deploy. Building full site."
echo;
read -p 'WARNING: Specifying "-f" will DELETE the current contents of '"$(realpath arise-out)"'. Proceed? [y/N]: ' -n 1 -r;
echo;
if [[ $REPLY =~ ^[Yy]$ ]]; then
force_overwrite=true;
else
echo 'Aborting.';
exit 1;
fi;
elif [[ $@ == "build -kf" ]] || [[ $@ == "build -fk" ]]; then
arise_build="full"
keep_source=true
echo "Starting site deploy. Building full site. Source .md files will be retained in the final output."
echo;
read -p 'WARNING: Specifying "-f" will DELETE the current contents of '"$(realpath arise-out)"'. Proceed? [y/N]: ' -n 1 -r;
echo;
if [[ $REPLY =~ ^[Yy]$ ]]; then
force_overwrite=true;
else
echo 'Aborting.';
exit 1;
fi;
else
while getopts ":psrkf" options; do
case "${options}" in
p)
[[ -n "$arise_build" ]] && { arise_help; echo -e '\n\nERROR: Multiple exclusive build options detected. Aborting.'; exit 1; }
arise_build="pages_only";
echo "Starting site deploy. Building pages only.";
;;
s)
[[ -n "$arise_build" ]] && { arise_help; echo -e '\n\nERROR: Multiple exclusive build options detected. Aborting.'; exit 1; }
arise_build="sitemap_only";
echo "Starting site deploy. Building sitemap only.";
;;
r)
[[ -n "$arise_build" ]] && { arise_help; echo -e '\n\nERROR: Multiple exclusive build options detected. Aborting.'; exit 1; }
arise_build="rss_only";
echo "Starting site deploy. Building RSS feed only.";
;;
k)
keep_source=true;
echo "Source .md files will be retained in the final output."l
;;
f)
echo;
read -p 'WARNING: Specifying "-f" will DELETE the current contents of '"$(realpath arise-out)"'. Proceed? [y/N]: ' -n 1 -r;
echo;
if [[ $REPLY =~ ^[Yy]$ ]]; then
force_overwrite=true;
else
echo 'Aborting.';
exit 1;
fi;
;;
esac
done
fi
[[ -z "$arise_build" ]] && { arise_help; exit 1; }
echo
# Make sure "arise_out" is empty and copy the source files over there to work from during the build process.
[[ -d arise-out ]] && [[ "$force_overwrite" == true ]] && rm -rf arise-out
mkdir -p arise-out
[[ -n "$(ls -A arise-out)" ]] && echo -e 'ERROR: The build output directory "/arise-out" is not empty. Program aborted to prevent overwrite of existing data.\n\nPlease empty the output directory before running Arise again or run your command with the "-f" flag to overwrite the existing output (dangerous).' && exit 1
cp -r "arise-source/". "arise-out"
## Set an absolute path for $config
config=$(realpath $config)
# Define a temporary file for a list of all source files for post-build cleanup
removelist="arise-out/arise-remove-$RANDOM.tmp"
touch $removelist
removelist=$(realpath $removelist)
# Run the build process depending on whatever options have been set
if [[ "$arise_build" == "full" ]] || [[ "$arise_build" == "pages_only" ]]; then
echo -n "Building pages..."
build_page_tree arise-out || { echo "ERROR: An error was encountered while building pages. Aborting build cycle."; exit 1; }
echo " DONE."
fi
if [[ "$arise_build" == "full" ]] || [[ "$arise_build" == "rss_only" ]]; then
echo -n "Building RSS feed..."
build_rss arise-out/rss.xml || { echo "ERROR: An error was encountered while building the RSS feed. Aborting build cycle."; exit 1; }
echo " DONE."
fi
if [[ "$arise_build" == "full" ]] || [[ "$arise_build" == "sitemap_only" ]]; then
echo -n "Building sitemap..."
build_sitemap arise-out/sitemap.xml || { echo "ERROR: An error was encountered while building the sitemap. Aborting build cycle."; exit 1; }
echo " DONE."
fi
if [[ "$keep_source" == false ]]; then
echo -n "Cleaning up build source files from output..."
# Remove every page that we built from as part of the build cycle
while read fname; do
[[ -f "$fname" ]] && rm "$fname"
done <$removelist
# Remove site config templates
rm "$config/header.html"
rm "$config/content_header.html"
rm "$config/footer.html"
rm "$config/arise.conf"
echo " DONE."
fi
rm $removelist
echo -e '\nBuild completed! Built artefacts have been generated at:\n'"$(realpath arise-out)"