diff --git a/readme.md b/readme.md index 1b93a7f..f52cdc3 100644 --- a/readme.md +++ b/readme.md @@ -222,13 +222,6 @@ Handle project workflows in a unified way: #### Shell * comment -* display locales - * default - * available - * effective - * selected - * available - * effective * handle errors * packages * configure diff --git a/spcd/bootstrap.sh b/spcd/bootstrap.sh index 65e71c6..3b510f8 100644 --- a/spcd/bootstrap.sh +++ b/spcd/bootstrap.sh @@ -200,62 +200,51 @@ _spcd_txt_pick() { # ╰───────────╯ spcd_ca() { - local index name value 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 + 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") echo "${name} =" echo "${value}" | openssl x509 -noout -text | grep "${grep}" - done - ;; - "write") - local root="${2}" - while true; do - index=$((index + 1)) - name="SPCD_CA_${index}" - eval "value=\"\${${name}}\"" - [ -n "${value}" ] || break + ;; + "write") spcd_os_write "${root}/${index}.crt" "${value}" - done - ;; - *) ;; - esac + ;; + *) ;; + esac + done } spcd_dns() { - local index name value - case "${1}" in - "list") - while true; do - index=$((index + 1)) - name="SPCD_DNS_${index}" - eval "value=\"\${${name}}\"" - [ -n "${value}" ] || break + 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") spcd_os_printenv "${name}" - done - ;; - "write") - local text - while true; do - index=$((index + 1)) - name="SPCD_DNS_${index}" - eval "value=\"\${${name}}\"" - [ -n "${value}" ] || break + ;; + "write") text="${text}\ nameserver ${value} " - done + ;; + *) ;; + esac + done + if [ "${1}" = "write" ]; then spcd_os_write "/etc/resolv.conf" "${text}" - ;; - *) ;; - esac + fi } # ╭───────────┬───────╮ @@ -389,8 +378,9 @@ spcd_txt_get() { } spcd_txt_locale() { - local value name locale + spcd_split + local value name if [ -n "${1}" ]; then value="${1}" else @@ -418,41 +408,48 @@ spcd_txt_locale() { locale } +spcd_txt_locales_echo() { + case "${1}" in + "LANGUAGE") spcd_os_printenv "LANGUAGE" ;; + *) locale -a ;; + esac +} + spcd_txt_locales() { set -- \ "${SPCD_TXT_LOCALE_ENGLISH}" \ "${SPCD_TXT_LOCALE_FRENCH}" - local locale - case "${1}" in - "glibc-langpack-") - local language - for locale in "${@}"; do + local language locale text + spcd_txt_locales_echo + spcd_split + for locale in "${@}"; do + case "${1}" in + "glibc-langpack-") language="$(echo "${locale}" | cut -d _ -f 1)" spcd_install_package "glibc-langpack-${language}" - done - ;; - "LANGUAGE") - local text - for locale in "${@}"; do + ;; + "LANGUAGE") if [ -n "${text}" ]; then text="${text}:${locale}" else text="${locale}" fi - done - export LANGUAGE="${text}" - ;; - "locale.gen") - local text - for locale in "${@}"; do + ;; + "locale.gen") text="${text}\ ${locale}.${_SPCD_TXT_CHARSET} ${_SPCD_TXT_CHARSET} " - done - spcd_os_write "/etc/locale.gen" "${text}" - ;; + ;; + *) ;; + esac + done + case "${1}" in + "LANGUAGE") export LANGUAGE="${text}" ;; + "locale.gen") spcd_os_write "/etc/locale.gen" "${text}" ;; *) ;; esac + spcd_split + spcd_txt_locales_echo } # ╭──────╮