#!/bin/bash get_decompressor() { case "$1" in *.gz) cat=zcat of=${1%.gz} ;; *.bz2) cat=bzcat of=${1%.bz2} ;; *) cat=cat of=$1 ;; esac } add_keymap_file() { local cat cmd rest f of while read f; do get_decompressor "$f" while read -r cmd rest; do if [[ $cmd == include ]]; then eval set $rest add_keymap_file "$1" fi done < <($cat "$f") add_dir "${of%/*}" $cat "$f" > "$BUILDROOT/$of" done < <( ( find /usr/share/kbd/keymaps/ -type f -regex ".*/$1\(\.inc\)?\(\.gz\|\.bz2\)?" ; find ${1%/*} -maxdepth 1 -type f -regex "$1\(\.inc\)?\(\.gz\|\.bz2\)?" 2>/dev/null ) | cat ) } build() { # subshell to avoid namespace pollution ( shopt -s nullglob [[ -s /etc/vconsole.conf ]] && . /etc/vconsole.conf [[ $KEYMAP ]] && add_keymap_file $KEYMAP.map [[ $KEYMAP_TOGGLE ]] && add_keymap_file $KEYMAP_TOGGLE.map ) } build help() { cat <