diff --git a/cd.sh b/cd.sh index e50c76f..e4796f3 100644 --- a/cd.sh +++ b/cd.sh @@ -1,5 +1,3 @@ -#! /usr/bin/env bash - CD_DNS_SERVERS=( '9.9.9.9' ) @@ -23,180 +21,77 @@ case "${CD_OS_NAME}" in exit 1 ;; esac -CD_STEP=0 -function cd_step { - if [ "${1}" ] ; then - ((CD_STEP++)) - echo " - ↕ ${CD_STEP} ↔ ${1} +function split { + [ "${1}" ] && echo " +${1} " - fi } -function cd_write { -local file="${1}" -local text="${2}" - if [ "${file}" ] ; then - echo -n "${text}" \ - > "${file}" \ - || exit - fi -} +split " 1/14 set name servers" +for server in "${CD_DNS_SERVERS[@]}" ; do + echo "nameserver ${server}" \ + >> "${CD_DNS_FILE}" \ + || exit +done -function cd_set_dns_resolving { -local server -local text='' - cd_step "${FUNCNAME}" - for server in "${CD_DNS_SERVERS[@]}" ; do - text+="nameserver ${server} -" - done - cd_write "${CD_DNS_FILE}" "${text}" -} - -function cd_set_packages_repositories { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') - cd_write '/etc/apt/sources.list' "\ -deb https://deb.debian.org/debian bookworm main -deb https://deb.debian.org/debian bookworm-backports main -deb https://deb.debian.org/debian bookworm-updates main -deb https://deb.debian.org/debian-security bookworm-security main -" - ;; - *) exit 1 ;; - esac -} - -function cd_set_packages_configuration { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') - cd_write '/etc/apt/apt.conf.d/apt.conf' "\ +split " 2/14 configure package manager" +echo -n "\ Acquire::Check-Valid-Until True; APT::Get::Show-Versions True; APT::Install-Recommends False; APT::Install-Suggests False; -Dir::Etc::SourceParts \"\"; -" - ;; - *) exit 1 ;; - esac -} +Dir::Etc::SourceParts ''; +" > '/etc/apt/apt.conf.d/apt.conf' \ +|| exit +split " 3/14 configure package repositories" +echo -n "\ +deb https://deb.debian.org/debian bookworm main +deb https://deb.debian.org/debian bookworm-backports main +deb https://deb.debian.org/debian bookworm-updates main +deb https://deb.debian.org/debian-security bookworm-security main +" > '/etc/apt/sources.list' \ +|| exit -function cd_set_https_verification_off { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') - cd_write '/etc/apt/apt.conf.d/https' "\ +split " 4/14 disable package verification" +echo -n "\ Acquire::https::Verify-Peer False; -" - ;; - *) exit 1 ;; - esac -} +" > '/etc/apt/apt.conf.d/https' \ +|| exit +split " 5/14 update package catalog" +apt-get update \ +|| exit +split " 6/14 install CA certificates package" +apt-get install --yes 'ca-certificates' \ +|| exit +split " 7/14 enable package verification" +rm '/etc/apt/apt.conf.d/https' \ +|| exit -function cd_update_packages_catalog { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') apt-get update || exit ;; - *) exit 1 ;; - esac -} +split " 8/14 update package catalog" +apt-get update \ +|| exit +split " 9/14 upgrade packages" +apt-get upgrade --yes \ +|| exit -function cd_install_package { - if [ "${1}" ] ; then - case "${CD_OS_NAME}" in - 'debian') apt-get install --yes "${1}" || exit ;; - *) exit 1 ;; - esac - fi -} - -function cd_install_ca { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') cd_install_package 'ca-certificates' ;; - *) exit 1 ;; - esac -} - -function cd_install_git { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') cd_install_package 'git' ;; - *) exit 1 ;; - esac -} - -function cd_install_packages_tools { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') cd_install_package 'apt-utils' ;; - *) exit 1 ;; - esac -} - -function cd_install_python { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') cd_install_package 'python3' ;; - *) exit 1 ;; - esac -} - -function cd_set_https_verification_on { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') rm '/etc/apt/apt.conf.d/https' ;; - *) exit 1 ;; - esac -} - -function cd_upgrade_packages { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') apt-get upgrade --yes || exit ;; - *) exit 1 ;; - esac -} - -function cd_clean_packages_cache { - cd_step "${FUNCNAME}" - case "${CD_OS_NAME}" in - 'debian') apt-get clean || exit ;; - *) exit 1 ;; - esac -} - -function cd_main { - cd_set_dns_resolving - cd_set_packages_repositories - cd_set_packages_configuration - cd_set_https_verification_off - cd_update_packages_catalog - cd_install_packages_tools - cd_install_ca - cd_set_https_verification_on - cd_update_packages_catalog - cd_upgrade_packages - cd_install_git - cd_install_python - cd_clean_packages_cache +split "10/14 install Git" +apt-get install --yes 'git' \ +|| exit DIRECTORY="$(mktemp --directory)" \ || exit -cd_step "clone Continuous Delivery" +split "11/14 clone Continuous Delivery" git clone \ "${GITHUB_SERVER_URL}/${CD_REPOSITORY}" \ "${DIRECTORY}" \ || exit -cd_step "bootstrap" +split "12/14 install Python" +apt-get install --yes 'python3' \ +|| exit +split "13/14 clean package cache" +apt-get clean \ +|| exit +split "14/14 bootstrap" "${DIRECTORY}/bootstrap.sh" - -} - -cd_main