#!/bin/bash

## Copyright (C) 2012 - 2025 ENCRYPTED SUPPORT LLC <adrelanos@whonix.org>
## See the file COPYING for copying conditions.

#set -x
set -o errexit
set -o nounset
set -o pipefail
set -o errtrace
shopt -s inherit_errexit
shopt -s shift_verbose
export LC_ALL=C

## 'variables' should not be sourced twice in the same shell.
if [ "${variables_finalized:-}" = "true" ]; then
   return 0
fi

true "${BASH_SOURCE[0]} INFO: begin"

MYDIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" && pwd )"
[ -n "${source_code_folder_dist:-}" ] || source_code_folder_dist="$(dirname -- "${MYDIR}")"
export source_code_folder_dist

[ -n "${HELPER_SCRIPTS_PATH:-}" ] || HELPER_SCRIPTS_PATH="${source_code_folder_dist}/packages/kicksecure/helper-scripts"
export HELPER_SCRIPTS_PATH

# shellcheck source=../packages/kicksecure/helper-scripts/usr/libexec/helper-scripts/strings.bsh
source "${HELPER_SCRIPTS_PATH}"/usr/libexec/helper-scripts/strings.bsh

# shellcheck source=./misc-helpers.bsh
source "${MYDIR}/misc-helpers.bsh"

## All variables.d modules have to be sourced individually for shellcheck to
## see them. To regenerate this list:
##  * Run `ls -1` in `variables.d`
##  * Delete all of the source stanzas below
##  * Paste the list of files where the source stanzas used to be
##  * Use visual line select in Vim to select them all
##  * Use the following regex to expand them into source stanzas:
##      s/^\(.*\)$/# shellcheck source=..\/variables.d\/\1\rbash -n -- "${variables_d_dir}\/\1"\rsource "${variables_d_dir}\/\1"\r/g
variables_d_dir="${source_code_folder_dist}/variables.d"

# shellcheck source=../variables.d/00_preamble.bsh
bash -n -- "${variables_d_dir}/00_preamble.bsh"
source "${variables_d_dir}/00_preamble.bsh"

# shellcheck source=../variables.d/05_load-config.bsh
bash -n -- "${variables_d_dir}/05_load-config.bsh"
source "${variables_d_dir}/05_load-config.bsh"

# shellcheck source=../variables.d/06_skip-scripts.bsh
bash -n -- "${variables_d_dir}/06_skip-scripts.bsh"
source "${variables_d_dir}/06_skip-scripts.bsh"

# shellcheck source=../variables.d/10_misc.bsh
bash -n -- "${variables_d_dir}/10_misc.bsh"
source "${variables_d_dir}/10_misc.bsh"

# shellcheck source=../variables.d/15_redistributable.bsh
bash -n -- "${variables_d_dir}/15_redistributable.bsh"
source "${variables_d_dir}/15_redistributable.bsh"

# shellcheck source=../variables.d/20_flavor-resolve.bsh
bash -n -- "${variables_d_dir}/20_flavor-resolve.bsh"
source "${variables_d_dir}/20_flavor-resolve.bsh"

# shellcheck source=../variables.d/25_initramfs.bsh
bash -n -- "${variables_d_dir}/25_initramfs.bsh"
source "${variables_d_dir}/25_initramfs.bsh"

# shellcheck source=../variables.d/30_unsafe-io.bsh
bash -n -- "${variables_d_dir}/30_unsafe-io.bsh"
source "${variables_d_dir}/30_unsafe-io.bsh"

# shellcheck source=../variables.d/35_rsync.bsh
bash -n -- "${variables_d_dir}/35_rsync.bsh"
source "${variables_d_dir}/35_rsync.bsh"

# shellcheck source=../variables.d/40_version-paths.bsh
bash -n -- "${variables_d_dir}/40_version-paths.bsh"
source "${variables_d_dir}/40_version-paths.bsh"

# shellcheck source=../variables.d/45_reproducible.bsh
bash -n -- "${variables_d_dir}/45_reproducible.bsh"
source "${variables_d_dir}/45_reproducible.bsh"

# shellcheck source=../variables.d/50_upload.bsh
bash -n -- "${variables_d_dir}/50_upload.bsh"
source "${variables_d_dir}/50_upload.bsh"

# shellcheck source=../variables.d/55_apt-sources.bsh
bash -n -- "${variables_d_dir}/55_apt-sources.bsh"
source "${variables_d_dir}/55_apt-sources.bsh"

# shellcheck source=../variables.d/60_apt-opts.bsh
bash -n -- "${variables_d_dir}/60_apt-opts.bsh"
source "${variables_d_dir}/60_apt-opts.bsh"

# shellcheck source=../variables.d/60_dependencies.bsh
bash -n -- "${variables_d_dir}/60_dependencies.bsh"
source "${variables_d_dir}/60_dependencies.bsh"

# shellcheck source=../variables.d/60_pkg-list.bsh
bash -n -- "${variables_d_dir}/60_pkg-list.bsh"
source "${variables_d_dir}/60_pkg-list.bsh"

# shellcheck source=../variables.d/65_signing.bsh
bash -n -- "${variables_d_dir}/65_signing.bsh"
source "${variables_d_dir}/65_signing.bsh"

# shellcheck source=../variables.d/70_cowbuilder.bsh
bash -n -- "${variables_d_dir}/70_cowbuilder.bsh"
source "${variables_d_dir}/70_cowbuilder.bsh"

# shellcheck source=../variables.d/95_env-vars-keep.bsh
bash -n -- "${variables_d_dir}/95_env-vars-keep.bsh"
source "${variables_d_dir}/95_env-vars-keep.bsh"

# shellcheck source=../variables.d/98_epilogue.bsh
bash -n -- "${variables_d_dir}/98_epilogue.bsh"
source "${variables_d_dir}/98_epilogue.bsh"

# shellcheck source=../variables.d/99_effects.bsh
bash -n -- "${variables_d_dir}/99_effects.bsh"
source "${variables_d_dir}/99_effects.bsh"

unset 'variables_d_dir'
variables_finalized="true"
