#!/bin/bash # This is used for initial loading # The starting point and is the only code that doesnt contain logic requirements # Source "init.sh" and "variables.sh" if they exist, otherwise return an error if [ -f "init.sh" ] && [ -f "variables.sh" ]; then source "init.sh" source "variables.sh" else # Print an error message for any missing files [ ! -f "init.sh" ] && isError " File 'init.sh' does not exist. Unable to source." [ ! -f "variables.sh" ] && isError " File 'variables.sh' does not exist. Unable to source." echo "Files are missing, please run 'libreportal reset'" fi # checkConfigFilesMissingFiles uses runInstallOp (in docker/command/run_privileged.sh) # to copy any missing config templates into place. That file's autoload stub # isn't defined until the function manifest is sourced inside initilize_files.sh # — which we haven't called yet at this point in load_sources. Source the # privileged helpers eagerly so the reconciliation can do its work on a fresh # install or after a config-template drift. The file is pure function defs; # safe to source unconditionally. [ -f "${install_scripts_dir}docker/command/run_privileged.sh" ] && \ source "${install_scripts_dir}docker/command/run_privileged.sh" # Source config check if [ -f "${install_scripts_dir}config/core/config_check_missing.sh" ]; then source "${install_scripts_dir}config/core/config_check_missing.sh" checkConfigFilesMissingFiles; else # Print an error message for any missing files [ ! -f "${install_scripts_dir}config/core/config_check_missing.sh" ] && isError " File '${install_scripts_dir}config/core/config_check_missing.sh' does not exist. Unable to source." echo "Files are missing, please run 'libreportal reset'" fi # Source the remaining files if they all exist if [ -f "${install_scripts_dir}source/loading/check_files.sh" ] && \ [ -f "${install_scripts_dir}source/loading/initilize_files.sh" ] && \ [ -f "${install_scripts_dir}source/loading/scan_files.sh" ]; then source "${install_scripts_dir}source/loading/check_files.sh" source "${install_scripts_dir}source/loading/initilize_files.sh" source "${install_scripts_dir}source/loading/scan_files.sh" else # Print an error message for any missing files [ ! -f "${install_scripts_dir}source/loading/check_files.sh" ] && isError " File '${install_scripts_dir}source/loading/check_files.sh' does not exist. Unable to source." [ ! -f "${install_scripts_dir}source/loading/initilize_files.sh" ] && isError " File '${install_scripts_dir}source/loading/initilize_files.sh' does not exist. Unable to source." [ ! -f "${install_scripts_dir}source/loading/scan_files.sh" ] && isError " File '${install_scripts_dir}source/loading/scan_files.sh' does not exist. Unable to source." echo "Files are missing, please run 'libreportal reset'" fi # For starting the script if [[ $init_run_flag == "true" ]]; then # For loading LibrePortal as a long-running process (task processor, # WebUI service). Eager loading wins here — the process keeps running, # so first call to anything should be hot. LP_LAZY stays unset. sourceCheckFiles "run"; elif [[ $init_run_flag == "false" ]]; then # For one-shot CLI invocations. Default LP_LAZY=1 so short commands # (`libreportal help`, `peer list`, etc.) only source the ~8 files with # top-level side effects + the function manifest stubs, deferring the # ~420 pure function libs until something actually calls them. ~34% # wall-time savings on a no-op command in measurement (Phase 4 of the # lazy-load work). Explicit `LP_LAZY=0 libreportal …` still works for # debugging or for catching a stale manifest. : "${LP_LAZY:=1}" export LP_LAZY sourceCheckFiles "cli"; fi