diff --git a/readme.md b/readme.md index 1b93a7f..a42e5c2 100644 --- a/readme.md +++ b/readme.md @@ -229,6 +229,10 @@ Handle project workflows in a unified way: * selected * available * effective +* factorize + * ca + * dns + * locales * handle errors * packages * configure diff --git a/spcd/bootstrap.sh b/spcd/bootstrap.sh index 8427ef2..65e71c6 100644 --- a/spcd/bootstrap.sh +++ b/spcd/bootstrap.sh @@ -200,51 +200,62 @@ _spcd_txt_pick() { # ╰───────────╯ spcd_ca() { - local grep="\(After\|Before\|Issuer\|Signature Algorithm\|Subject:\)" local index name value - local root="${2}" - while true; do - index=$((index + 1)) - name="SPCD_CA_${index}" - eval "value=\"\${${name}}\"" - [ -n "${value}" ] || break - case "${1}" in - "list") + local grep="\(After\|Before\|Issuer\|Signature Algorithm\|Subject:\)" + case "${1}" in + "list") + while true; do + index=$((index + 1)) + name="SPCD_CA_${index}" + eval "value=\"\${${name}}\"" + [ -n "${value}" ] || break echo "${name} =" echo "${value}" | openssl x509 -noout -text | grep "${grep}" - ;; - "write") + done + ;; + "write") + local root="${2}" + while true; do + index=$((index + 1)) + name="SPCD_CA_${index}" + eval "value=\"\${${name}}\"" + [ -n "${value}" ] || break spcd_os_write "${root}/${index}.crt" "${value}" - ;; - *) ;; - esac - done + done + ;; + *) ;; + esac } spcd_dns() { - local index name text value - while true; do - index=$((index + 1)) - name="SPCD_DNS_${index}" - eval "value=\"\${${name}}\"" - [ -n "${value}" ] || break - case "${1}" in - "list") + local index name value + case "${1}" in + "list") + while true; do + index=$((index + 1)) + name="SPCD_DNS_${index}" + eval "value=\"\${${name}}\"" + [ -n "${value}" ] || break spcd_os_printenv "${name}" - ;; - "write") + done + ;; + "write") + local text + while true; do + index=$((index + 1)) + name="SPCD_DNS_${index}" + eval "value=\"\${${name}}\"" + [ -n "${value}" ] || break text="${text}\ nameserver ${value} " - ;; - *) ;; - esac - done - if [ "${1}" = "write" ]; then + done spcd_os_write "/etc/resolv.conf" "${text}" - fi + ;; + *) ;; + esac } # ╭───────────┬───────╮ @@ -411,31 +422,35 @@ spcd_txt_locales() { set -- \ "${SPCD_TXT_LOCALE_ENGLISH}" \ "${SPCD_TXT_LOCALE_FRENCH}" - local language locale text - for locale in "${@}"; do - case "${1}" in - "glibc-langpack-") + local locale + case "${1}" in + "glibc-langpack-") + local language + for locale in "${@}"; do language="$(echo "${locale}" | cut -d _ -f 1)" spcd_install_package "glibc-langpack-${language}" - ;; - "LANGUAGE") + done + ;; + "LANGUAGE") + local text + for locale in "${@}"; do if [ -n "${text}" ]; then text="${text}:${locale}" else text="${locale}" fi - ;; - "locale.gen") + done + export LANGUAGE="${text}" + ;; + "locale.gen") + local text + for locale in "${@}"; do text="${text}\ ${locale}.${_SPCD_TXT_CHARSET} ${_SPCD_TXT_CHARSET} " - ;; - *) ;; - esac - done - case "${1}" in - "LANGUAGE") export LANGUAGE="${text}" ;; - "locale.gen") spcd_os_write "/etc/locale.gen" "${text}" ;; + done + spcd_os_write "/etc/locale.gen" "${text}" + ;; *) ;; esac }