Browse Source

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

master
Harald Hoyer 3 years ago committed by Harald Hoyer
parent
commit
00ca6bed37
  1. 0
      modules.d/10i18n/.shchkdir
  2. 33
      modules.d/10i18n/console_init.sh
  3. 108
      modules.d/10i18n/module-setup.sh

0
modules.d/10i18n/.shchkdir

33
modules.d/10i18n/console_init.sh

@ -2,8 +2,8 @@ @@ -2,8 +2,8 @@

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

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

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

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

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

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

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

set_font() {
local dev=$1
local trans=''
local uni=''

[ -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}
setfont "${FONT-${DEFAULT_FONT}}" \
-C "${1}" \
${FONT_MAP:+-m "${FONT_MAP}"} \
${FONT_UNIMAP:+-u "${FONT_UNIMAP}"}
}

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

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

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

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

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

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

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

dev_close

108
modules.d/10i18n/module-setup.sh

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

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

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

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

# This is from 10redhat-i18n.
findkeymap() {
local MAPS=$1
local MAPNAME=${1%.map*}
local map
[[ ! -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
KEYMAPS="$KEYMAPS $map "
case $map in
*.gz) cmd="zgrep" ;;
*.bz2) cmd="bzgrep" ;;
*) cmd="grep" ;;
# shellcheck disable=SC2064
trap "$(shopt -p nullglob globstar)" RETURN
shopt -q -s nullglob globstar

local -a MAPS
local MAPNAME
local INCLUDES
local MAP
local CMD
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

for INCL in $($cmd "^include " $map | while read _ a _ || [ -n "$a" ]; do echo ${a//\"/}; done); do
for FN in $(find $dracutsysrootdir${kbddir}/keymaps -type f -name $INCL\*); do
readarray -t INCLUDES < <("$CMD" '^include ' "$MAP" | while read -r _ a _ || [ -n "$a" ]; do echo "${a//\"/}"; done)

for INCL in "${INCLUDES[@]}"; do
for FN in "$dracutsysrootdir""${kbddir}"/keymaps/**/"$INCL"*; do
[[ -f $FN ]] || continue
strstr "$KEYMAPS" " $FN " || findkeymap $FN
[[ -v KEYMAPS["$FN"] ]] || findkeymap "$FN"
done
done
done
@ -84,15 +104,16 @@ install() { @@ -84,15 +104,16 @@ install() {

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

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

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

install_all_kbd() {
local rel f
local _src _line

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

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

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

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

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

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

for keymap in ${KEYMAPS}; do
inst_opt_decompress ${keymap}
for keymap in "${!KEYMAPS[@]}"; do
inst_opt_decompress "${keymap}"
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*}
inst_opt_decompress ${kbddir}/consolefonts/${FONT}.*
inst_opt_decompress "${kbddir}"/consolefonts/"${FONT}".*
fi

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

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

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

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

return 0

Loading…
Cancel
Save