diff --git a/spcd/main.sh b/spcd/bootstrap.sh similarity index 92% rename from spcd/main.sh rename to spcd/bootstrap.sh index 6481aa0..93709b0 100644 --- a/spcd/main.sh +++ b/spcd/bootstrap.sh @@ -1,7 +1,5 @@ #! /usr/bin/env sh -#╶──────────────────────────────────────╴ - # ╭──────────╮ # │ defaults │ # ╰──────────╯ @@ -184,7 +182,7 @@ spcd_os_cat() { spcd_cat__file="${1}" if [ -n "${spcd_cat__file}" ]; then spcd_frame_open "${spcd_cat__file}" - cat "${spcd_cat__file}" || exit + cat "${spcd_cat__file}" spcd_frame_shut "${spcd_cat__file}" fi } @@ -251,6 +249,19 @@ spcd_git_url() { fi } +# ╭───────────┬─────────╮ +# │ functions │ openssl │ +# ╰───────────┴─────────╯ + +spcd_openssl_x509() { + spcd_openssl_x509__file="${1}" + if [ -f "${spcd_openssl_x509__file}" ]; then + openssl x509 \ + -in "${spcd_openssl_x509__file}" \ + -noout -text + fi +} + # ╭───────────┬────╮ # │ functions │ os │ # ╰───────────┴────╯ @@ -294,7 +305,7 @@ spcd_os_rm() { spcd_os_rm__path="${1}" if [ -e "${spcd_os_rm__path}" ]; then echo "← ${spcd_os_rm__path}" - rm -r "${spcd_os_rm__path}" || exit + rm -r "${spcd_os_rm__path}" fi } @@ -331,7 +342,7 @@ spcd_python_ln() { if [ -n "${spcd_python_ln__command}" ]; then echo "→ ${SPCD_PYTHON_ALIAS} → ${spcd_python_ln__command}" ln -f -s "${spcd_python_ln__command}" \ - "/usr/bin/${SPCD_PYTHON_ALIAS}" || exit + "/usr/bin/${SPCD_PYTHON_ALIAS}" fi } @@ -408,12 +419,12 @@ SPCD_PM_ZYPPER="zypper" SPCD_PYTHON_VENV="/opt/venv" SPCD_PYTHON_VENV_BINARIES="${SPCD_PYTHON_VENV}/bin" -# ╭───────┬─────╮ -# │ steps │ env │ -# ╰───────┴─────╯ +# ╭───────┬─────────────╮ +# │ steps │ environment │ +# ╰───────┴─────────────╯ -spcd_set_environment_variables() { - spcd_step "Set environment variables" +spcd_environment_set_variables() { + spcd_step "Set variables" # check script first [ -n "${SPCD}" ] || spcd_error_ci "SPCD" # continuous integration / github → gitea → forgejo @@ -893,18 +904,47 @@ ${SPCD_PYTHON_VENV}/lib/${SPCD_PYTHON_COMMAND}/site-packages" spcd_os_printenv "SPCD_CA" "SPCD_DL" } -spcd_list_working_directory() { - spcd_step "List working directory" +spcd_environment_list_workspace() { + spcd_step "List workspace" spcd_lwd__path="$(realpath .)" spcd_os_ls "${spcd_lwd__path}" } +# ╭───────┬───────────╮ +# │ steps │ functions │ +# ╰───────┴───────────╯ + +spcd_install_package() { + spcd_install_package__name="${1}" + if [ -n "${spcd_install_package__name}" ]; then + ${SPCD_PM_INSTALL} "${spcd_install_package__name}" + ${SPCD_PM_CLEAN} + fi +} + # ╭───────┬─────╮ -# │ steps │ pkg │ +# │ steps │ dns │ # ╰───────┴─────╯ -spcd_set_packages_repositories() { - spcd_step "Set packages repositories" +spcd_dns() { + spcd_step "DNS" + while true; do + spcd_sdr__index=$((spcd_sdr__index + 1)) + eval "spcd_sdr__value=\"\${SPCD_DNS_${spcd_sdr__index}}\"" + [ -n "${spcd_sdr__value}" ] || break + spcd_sdr__text="${spcd_sdr__text}\ +nameserver ${spcd_sdr__value} +" + done + spcd_os_write "${SPCD_DNS_FILE}" "${spcd_sdr__text}" +} + +# ╭───────┬──────────╮ +# │ steps │ packages │ +# ╰───────┴──────────╯ + +spcd_packages_set_repositories() { + spcd_step "Set repositories" case "${SPCD_OS_ID}" in "${SPCD_OS_ALMA}") case "${SPCD_OS_VERSION}" in @@ -970,8 +1010,8 @@ deb ${SPCD_URL_CHOSEN} ${SPCD_OS_VERSION}-security main universe esac } -spcd_set_packages_configuration() { - spcd_step "Set packages configuration" +spcd_packages_set_configuration() { + spcd_step "Set configuration" spcd_os_write "${SPCD_PM_CONF_PATH}" "${SPCD_PM_CONF_TEXT}" case "${SPCD_OS_ID}" in "${SPCD_OS_ARCH}") @@ -984,36 +1024,21 @@ spcd_set_packages_configuration() { esac } -# agnostic steps - -spcd_set_https_verification_off() { +spcd_packages_trust_https() { + spcd_step "Trust HTTPS" if [ -n "${SPCD_CA}" ] || [ "${SPCD_PM}" = "${SPCD_PM_APT}" ]; then - spcd_step "Set HTTPS verification off" spcd_os_mkdir "$(dirname "${SPCD_PM_HTTPS_PATH}")" spcd_os_write "${SPCD_PM_HTTPS_PATH}" "${SPCD_PM_HTTPS_TEXT}" fi } -spcd_set_dns_resolving() { - spcd_step "Set DNS resolving" - while true; do - spcd_sdr__index=$((spcd_sdr__index + 1)) - eval "spcd_sdr__value=\"\${SPCD_DNS_${spcd_sdr__index}}\"" - [ -n "${spcd_sdr__value}" ] || break - spcd_sdr__text="${spcd_sdr__text}\ -nameserver ${spcd_sdr__value} -" - done - spcd_os_write "${SPCD_DNS_FILE}" "${spcd_sdr__text}" +spcd_packages_update_catalog() { + spcd_step "Update catalog" + ${SPCD_PM_UPDATE} } -spcd_update_packages_catalog() { - spcd_step "Update packages catalog" - ${SPCD_PM_UPDATE} || exit -} - -spcd_install_packages_tools() { - spcd_step "Install packages tools" +spcd_packages_install_tools() { + spcd_step "Install tools" spcd_install_package "${SPCD_PKG_PKG}" } @@ -1036,35 +1061,35 @@ spcd_write_ca_certificates() { spcd_wcc__path="${SPCD_CA_ROOT}/${spcd_wcc__index}.crt" spcd_split spcd_os_write "${spcd_wcc__path}" "${spcd_wcc__text}" - spcd_openssl "${spcd_wcc__path}" + spcd_openssl_x509 "${spcd_wcc__path}" done } spcd_update_ca_certificates() { spcd_step "Update CA certificates" - ${SPCD_CMD_CA} || exit + ${SPCD_CMD_CA} } -# ╭───────┬─────╮ -# │ steps │ pkg │ -# ╰───────┴─────╯ +# ╭───────┬──────────╮ +# │ steps │ packages │ +# ╰───────┴──────────╯ -spcd_set_https_verification_on() { - spcd_step "Set HTTPS verification on" +spcd_packages_verify_https() { + spcd_step "Verify HTTPS" spcd_os_rm "${SPCD_PM_HTTPS_PATH}" } -spcd_upgrade_packages() { - spcd_step "Upgrade packages" - ${SPCD_PM_UPGRADE} || exit +spcd_packages_upgrade_system() { + spcd_step "Upgrade system" + ${SPCD_PM_UPGRADE} } -spcd_install_dos2unix() { +spcd_packages_install_dos2unix() { spcd_step "Install dos2unix" spcd_install_package "${SPCD_PKG_DOS2UNIX}" } -spcd_install_git() { +spcd_packages_install_git() { spcd_step "Install Git" spcd_install_package "${SPCD_PKG_GIT}" } @@ -1073,8 +1098,8 @@ spcd_install_git() { # │ steps │ python │ # ╰───────┴────────╯ -spcd_install_python() { - spcd_step_in "Install Python" +spcd_python_install() { + spcd_step "Install package" spcd_install_package "${SPCD_PYTHON_PACKAGE}" spcd_step "Link alias to command" spcd_python_ln "${SPCD_PYTHON_COMMAND}" @@ -1098,11 +1123,10 @@ index-url = ${SPCD_URL_PYTHON} export PATH="${SPCD_PYTHON_VENV_BINARIES}:${PATH}" export VIRTUAL_ENV="${SPCD_PYTHON_VENV}" spcd_step_out - spcd_step_out } -spcd_install_python_modules() { - spcd_step_in "Python modules" +spcd_python_modules() { + spcd_step_in "Modules" spcd_ipm__target="${SPCD_PYTHON_VENV_PACKAGES}" spcd_step "List" spcd_os_ls "${spcd_ipm__target}" @@ -1110,7 +1134,7 @@ spcd_install_python_modules() { spcd_ipm__path="$(spcd_python_pip "${SPCD_GIT_MAIN}")" # check matching of file and variable spcd_step "Check" - spcd_ipm__script="${spcd_ipm__path}/main.sh" + spcd_ipm__script="${spcd_ipm__path}/bootstrap.sh" ls -l "${spcd_ipm__script}" spcd_ipm__check="${spcd_ipm__script}.${SPCD_CMD_SUM}" "${SPCD_CMD_SUM}" "${spcd_ipm__script}" >"${spcd_ipm__check}" @@ -1189,8 +1213,8 @@ spcd_install_packages() { spcd_step_out } -spcd_write_python_module() { - spcd_step "Write Python module" +spcd_python_write_module() { + spcd_step "Write module" for spcd_wpm__variable in \ OS_ID OS_VERSION \ PROJECT_ROOT PROJECT_PATH PROJECT_NAME \ @@ -1208,8 +1232,8 @@ SPCD_STEP = $((SPCD_STEP + 1)) done } -spcd_switch_to_python() { - spcd_step "Switch to Python" +spcd_python_switch() { + spcd_step "Switch" spcd_stp__name="$(basename "${SPCD_GIT_MAIN}")" echo "\ ${SPCD_PATH} @@ -1220,62 +1244,45 @@ ${SPCD_PYTHON_ALIAS} / ${spcd_stp__name}" #╶──────────────────────────────────────╴ -# ╭───────────╮ -# │ functions │ -# ╰───────────╯ - -spcd_install_package() { - spcd_install_package__name="${1}" - if [ -n "${spcd_install_package__name}" ]; then - ${SPCD_PM_INSTALL} "${spcd_install_package__name}" || exit - ${SPCD_PM_CLEAN} || exit - fi -} - -spcd_openssl() { - spcd_openssl__file="${1}" - if [ -f "${spcd_openssl__file}" ]; then - openssl x509 \ - -in "${spcd_openssl__file}" \ - -noout -text || - exit - fi -} - -#╶──────────────────────────────────────╴ - # ╭──────╮ # │ main │ # ╰──────╯ spcd_main() { - # env - spcd_set_environment_variables - spcd_list_working_directory - # pkg - spcd_set_packages_repositories - spcd_set_packages_configuration - # - spcd_set_https_verification_off - spcd_set_dns_resolving - spcd_update_packages_catalog - spcd_install_packages_tools + # environment + spcd_step_in "Environment" + spcd_environment_set_variables + spcd_environment_list_workspace + spcd_step_out + # dns + spcd_dns + # packages + spcd_step_in "Packages" + spcd_packages_set_repositories + spcd_packages_set_configuration + spcd_packages_trust_https + spcd_packages_update_catalog + spcd_packages_install_tools + spcd_step_out # ca spcd_install_ca_certificates spcd_write_ca_certificates spcd_update_ca_certificates - # pkg - spcd_set_https_verification_on - spcd_update_packages_catalog - spcd_upgrade_packages - spcd_install_dos2unix - spcd_install_git + # packages + spcd_step_in "Packages" + spcd_packages_verify_https + spcd_packages_update_catalog + spcd_packages_upgrade_system + spcd_packages_install_dos2unix + spcd_packages_install_git + spcd_step_out # python - spcd_install_python - spcd_install_python_modules + spcd_step_in "Python" + spcd_python_install + spcd_python_modules spcd_install_packages - spcd_write_python_module - spcd_switch_to_python + spcd_python_write_module + spcd_python_switch } spcd_main