fix(i18n): shellcheck for modules.d/10i18n

master
Harald Hoyer 2021-03-26 10:29:13 +01:00 committed by Harald Hoyer
parent 2b5ddc7722
commit 00ca6bed37
3 changed files with 79 additions and 60 deletions

View File

View File

@ -2,8 +2,8 @@


[ -n "$DRACUT_SYSTEMD" ] && exit 0 [ -n "$DRACUT_SYSTEMD" ] && exit 0


if [ -x $systemdutildir/systemd-vconsole-setup ]; then if [ -x "$systemdutildir"/systemd-vconsole-setup ]; then
$systemdutildir/systemd-vconsole-setup "$@" "$systemdutildir"/systemd-vconsole-setup "$@"
fi fi


[ -e /etc/vconsole.conf ] && . /etc/vconsole.conf [ -e /etc/vconsole.conf ] && . /etc/vconsole.conf
@ -23,10 +23,10 @@ set_terminal() {


if [ "${UNICODE}" = 1 ]; then if [ "${UNICODE}" = 1 ]; then
printf '\033%%G' >&7 printf '\033%%G' >&7
stty -F ${dev} iutf8 stty -F "${dev}" iutf8
else else
printf '\033%%@' >&7 printf '\033%%@' >&7
stty -F ${dev} -iutf8 stty -F "${dev}" -iutf8
fi fi
} }


@ -41,19 +41,15 @@ set_keymap() {


[ "${UNICODE}" = 1 ] && utf_switch=-u [ "${UNICODE}" = 1 ] && utf_switch=-u


# shellcheck disable=SC2086
loadkeys -q ${utf_switch} ${KEYMAP} ${EXT_KEYMAPS} loadkeys -q ${utf_switch} ${KEYMAP} ${EXT_KEYMAPS}
} }


set_font() { set_font() {
local dev=$1 setfont "${FONT-${DEFAULT_FONT}}" \
local trans='' -C "${1}" \
local uni='' ${FONT_MAP:+-m "${FONT_MAP}"} \

${FONT_UNIMAP:+-u "${FONT_UNIMAP}"}
[ -z "${FONT}" ] && FONT=${DEFAULT_FONT}
[ -n "${FONT_MAP}" ] && trans="-m ${FONT_MAP}"
[ -n "${FONT_UNIMAP}" ] && uni="-u ${FONT_UNIMAP}"

setfont ${FONT} -C ${dev} ${trans} ${uni}
} }


dev_close() { dev_close() {
@ -64,19 +60,18 @@ dev_close() {
dev_open() { dev_open() {
local dev=$1 local dev=$1


exec 6< ${dev} \ exec 6< "${dev}" \
&& exec 7>> ${dev} && exec 7>> "${dev}"
} }


dev=/dev/${1#/dev/} dev=/dev/${1#/dev/}
devname=${dev#/dev/}


[ -c "${dev}" ] || { [ -c "${dev}" ] || {
echo "Usage: $0 device" >&2 echo "Usage: $0 device" >&2
exit 1 exit 1
} }


dev_open ${dev} dev_open "${dev}"


for fd in 6 7; do for fd in 6 7; do
if ! [ -t ${fd} ]; then if ! [ -t ${fd} ]; then
@ -87,8 +82,8 @@ for fd in 6 7; do
done done


set_keyboard set_keyboard
set_terminal ${dev} set_terminal "${dev}"
set_font ${dev} set_font "${dev}"
set_keymap set_keymap


dev_close dev_close

View File

@ -16,9 +16,12 @@ depends() {


# called by dracut # called by dracut
install() { install() {
declare -A KEYMAPS

if dracut_module_included "systemd"; then if dracut_module_included "systemd"; then
unset FONT unset FONT
unset KEYMAP unset KEYMAP
# shellcheck disable=SC1090
[[ -f "$dracutsysrootdir"/etc/vconsole.conf ]] && . "$dracutsysrootdir"/etc/vconsole.conf [[ -f "$dracutsysrootdir"/etc/vconsole.conf ]] && . "$dracutsysrootdir"/etc/vconsole.conf
fi fi


@ -27,26 +30,43 @@ install() {
I18N_CONF="/etc/locale.conf" I18N_CONF="/etc/locale.conf"
VCONFIG_CONF="/etc/vconsole.conf" VCONFIG_CONF="/etc/vconsole.conf"


# This is from 10redhat-i18n.
findkeymap() { findkeymap() {
local MAPS=$1 # shellcheck disable=SC2064
local MAPNAME=${1%.map*} trap "$(shopt -p nullglob globstar)" RETURN
local map shopt -q -s nullglob globstar
[[ ! -f $dracutsysrootdir$MAPS ]] \
&& MAPS=$(find $dracutsysrootdir${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\*)


for map in $MAPS; do local -a MAPS
KEYMAPS="$KEYMAPS $map " local MAPNAME
case $map in local INCLUDES
*.gz) cmd="zgrep" ;; local MAP
*.bz2) cmd="bzgrep" ;; local CMD
*) cmd="grep" ;; local FN

if [[ -f $dracutsysrootdir$1 ]]; then
MAPS=("$1")
else
MAPNAME=${1%.map*}
MAPS=("$dracutsysrootdir""${kbddir}"/keymaps/**/"${MAPNAME}"{,.map{,.*}})
fi

for MAP in "${MAPS[@]}"; do
[[ -f $MAP ]] || continue
[[ -v KEYMAPS["$MAP"] ]] && continue

KEYMAPS["$MAP"]=1

case "$MAP" in
*.gz) CMD="zgrep" ;;
*.bz2) CMD="bzgrep" ;;
*) CMD="grep" ;;
esac esac


for INCL in $($cmd "^include " $map | while read _ a _ || [ -n "$a" ]; do echo ${a//\"/}; done); do readarray -t INCLUDES < <("$CMD" '^include ' "$MAP" | while read -r _ a _ || [ -n "$a" ]; do echo "${a//\"/}"; done)
for FN in $(find $dracutsysrootdir${kbddir}/keymaps -type f -name $INCL\*); do
for INCL in "${INCLUDES[@]}"; do
for FN in "$dracutsysrootdir""${kbddir}"/keymaps/**/"$INCL"*; do
[[ -f $FN ]] || continue [[ -f $FN ]] || continue
strstr "$KEYMAPS" " $FN " || findkeymap $FN [[ -v KEYMAPS["$FN"] ]] || findkeymap "$FN"
done done
done done
done done
@ -84,15 +104,16 @@ install() {


# FIXME: double check # FIXME: double check
# shellcheck disable=SC2068 # shellcheck disable=SC2068
for item in $@; do for item in "$@"; do
item=(${item/:/ }) read -r -a item <<< "${item/:/ }"
for map in ${item[1]//,/ }; do for map in ${item[1]//,/ }; do
map=(${map//-/ }) read -r -a map <<< "${map//-/ }"
if [[ -f "$dracutsysrootdir${item[0]}" ]]; then if [[ -f "$dracutsysrootdir${item[0]}" ]]; then
value=$(grep "^${map[0]}=" "$dracutsysrootdir${item[0]}") value=$(grep "^${map[0]}=" "$dracutsysrootdir${item[0]}")
value=${value#*=} value=${value#*=}
echo "${map[1]:-${map[0]}}=${value}" echo "${map[1]:-${map[0]}}=${value}"
fi fi
unset map
done done
done done
} }
@ -101,8 +122,8 @@ install() {
inst_multiple setfont loadkeys kbd_mode stty inst_multiple setfont loadkeys kbd_mode stty


if ! dracut_module_included "systemd"; then if ! dracut_module_included "systemd"; then
inst ${moddir}/console_init.sh /lib/udev/console_init inst "${moddir}"/console_init.sh /lib/udev/console_init
inst_rules ${moddir}/10-console.rules inst_rules "${moddir}"/10-console.rules
inst_hook cmdline 20 "${moddir}/parse-i18n.sh" inst_hook cmdline 20 "${moddir}/parse-i18n.sh"
fi fi


@ -115,7 +136,7 @@ install() {
} }


install_all_kbd() { install_all_kbd() {
local rel f local _src _line


for _src in "${KBDSUBDIRS[@]}"; do for _src in "${KBDSUBDIRS[@]}"; do
inst_dir "${kbddir}/$_src" inst_dir "${kbddir}/$_src"
@ -126,12 +147,12 @@ install() {
rm -f -- "${initdir}${kbddir}/consoletrans/utflist" rm -f -- "${initdir}${kbddir}/consoletrans/utflist"
find "${initdir}${kbddir}/" -name README\* -delete find "${initdir}${kbddir}/" -name README\* -delete
find "${initdir}${kbddir}/" -name '*.gz' -print -quit \ find "${initdir}${kbddir}/" -name '*.gz' -print -quit \
| while read line || [ -n "$line" ]; do | while read -r _line || [ -n "$_line" ]; do
inst_multiple gzip inst_multiple gzip
done done


find "${initdir}${kbddir}/" -name '*.bz2' -print -quit \ find "${initdir}${kbddir}/" -name '*.bz2' -print -quit \
| while read line || [ -n "$line" ]; do | while read -r _line || [ -n "$_line" ]; do
inst_multiple bzip2 inst_multiple bzip2
done done
} }
@ -139,9 +160,12 @@ install() {
install_local_i18n() { install_local_i18n() {
local map local map


eval $(gather_vars ${i18n_vars}) # shellcheck disable=SC2086
[ -f $dracutsysrootdir$I18N_CONF ] && . $dracutsysrootdir$I18N_CONF eval "$(gather_vars ${i18n_vars})"
[ -f $dracutsysrootdir$VCONFIG_CONF ] && . $dracutsysrootdir$VCONFIG_CONF # shellcheck disable=SC1090
[ -f "$dracutsysrootdir"$I18N_CONF ] && . "$dracutsysrootdir"$I18N_CONF
# shellcheck disable=SC1090
[ -f "$dracutsysrootdir"$VCONFIG_CONF ] && . "$dracutsysrootdir"$VCONFIG_CONF


shopt -q -s nocasematch shopt -q -s nocasematch
if [[ ${UNICODE} ]]; then if [[ ${UNICODE} ]]; then
@ -183,48 +207,48 @@ install() {
return 1 return 1
} }


findkeymap ${KEYMAP} findkeymap "${KEYMAP}"


for map in ${EXT_KEYMAPS}; do for map in ${EXT_KEYMAPS}; do
ddebug "Adding extra map: ${map}" ddebug "Adding extra map: ${map}"
findkeymap ${map} findkeymap "${map}"
done done


for keymap in ${KEYMAPS}; do for keymap in "${!KEYMAPS[@]}"; do
inst_opt_decompress ${keymap} inst_opt_decompress "${keymap}"
done done


inst_opt_decompress ${kbddir}/consolefonts/${DEFAULT_FONT}.* inst_opt_decompress "${kbddir}"/consolefonts/"${DEFAULT_FONT}".*


if [[ ${FONT} ]] && [[ ${FONT} != ${DEFAULT_FONT} ]]; then if [[ ${FONT} ]] && [[ ${FONT} != "${DEFAULT_FONT}" ]]; then
FONT=${FONT%.psf*} FONT=${FONT%.psf*}
inst_opt_decompress ${kbddir}/consolefonts/${FONT}.* inst_opt_decompress "${kbddir}"/consolefonts/"${FONT}".*
fi fi


if [[ ${FONT_MAP} ]]; then if [[ ${FONT_MAP} ]]; then
FONT_MAP=${FONT_MAP%.trans} FONT_MAP=${FONT_MAP%.trans}
# There are three different formats that setfont supports # There are three different formats that setfont supports
inst_simple ${kbddir}/consoletrans/${FONT_MAP} \ inst_simple "${kbddir}"/consoletrans/"${FONT_MAP}" \
|| inst_simple ${kbddir}/consoletrans/${FONT_MAP}.trans \ || inst_simple "${kbddir}"/consoletrans/"${FONT_MAP}".trans \
|| inst_simple ${kbddir}/consoletrans/${FONT_MAP}_to_uni.trans \ || inst_simple "${kbddir}"/consoletrans/"${FONT_MAP}"_to_uni.trans \
|| dwarn "Could not find FONT_MAP ${FONT_MAP}!" || dwarn "Could not find FONT_MAP ${FONT_MAP}!"
fi fi


if [[ ${FONT_UNIMAP} ]]; then if [[ ${FONT_UNIMAP} ]]; then
FONT_UNIMAP=${FONT_UNIMAP%.uni} FONT_UNIMAP=${FONT_UNIMAP%.uni}
inst_simple ${kbddir}/unimaps/${FONT_UNIMAP}.uni inst_simple "${kbddir}"/unimaps/"${FONT_UNIMAP}".uni
fi fi


if dracut_module_included "systemd" && [[ -f $dracutsysrootdir${I18N_CONF} ]]; then if dracut_module_included "systemd" && [[ -f $dracutsysrootdir${I18N_CONF} ]]; then
inst_simple ${I18N_CONF} inst_simple ${I18N_CONF}
else else
mksubdirs ${initdir}${I18N_CONF} mksubdirs "${initdir}"${I18N_CONF}
print_vars LC_ALL LANG >> ${initdir}${I18N_CONF} print_vars LC_ALL LANG >> "${initdir}"${I18N_CONF}
fi fi


if ! dracut_module_included "systemd"; then if ! dracut_module_included "systemd"; then
mksubdirs ${initdir}${VCONFIG_CONF} mksubdirs "${initdir}"${VCONFIG_CONF}
print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF} print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> "${initdir}"${VCONFIG_CONF}
fi fi


return 0 return 0