scripts: add keyboard-scraper.sh
This script runs keyboard-configuration.config in a chroot. By running interesting locales against it, we can obtain keyboard suggestions.
This commit is contained in:
parent
d1dc7d4844
commit
271a1b2d29
|
@ -0,0 +1,86 @@
|
|||
# File generated by ./scripts/keyboard-scraper.sh, please do not edit manually
|
||||
# Based on output from keyboard-configuration.config
|
||||
en_US.UTF-8:
|
||||
layout: "us"
|
||||
variant: ""
|
||||
en_GB.UTF-8:
|
||||
layout: "gb"
|
||||
variant: ""
|
||||
kab_DZ.UTF-8:
|
||||
layout: "dz"
|
||||
variant: "la"
|
||||
ca_ES.UTF-8:
|
||||
layout: "es"
|
||||
variant: "cat"
|
||||
zh_CN.UTF-8:
|
||||
layout: "cn"
|
||||
variant: ""
|
||||
hr_HR.UTF-8:
|
||||
layout: "hr"
|
||||
variant: ""
|
||||
cs_CZ.UTF-8:
|
||||
layout: "cz"
|
||||
variant: ""
|
||||
ast_ES.UTF-8:
|
||||
layout: "es"
|
||||
variant: "ast"
|
||||
be_BY.UTF-8:
|
||||
layout: "us,by"
|
||||
variant: ""
|
||||
nl_NL.UTF-8:
|
||||
layout: "us"
|
||||
variant: ""
|
||||
fi_FI.UTF-8:
|
||||
layout: "fi"
|
||||
variant: ""
|
||||
fr_FR.UTF-8:
|
||||
layout: "fr"
|
||||
variant: "latin9"
|
||||
de_DE.UTF-8:
|
||||
layout: "de"
|
||||
variant: ""
|
||||
el_GR.UTF-8:
|
||||
layout: "us,gr"
|
||||
variant: ""
|
||||
he_IL.UTF-8:
|
||||
layout: "us,il"
|
||||
variant: ""
|
||||
hu_HU.UTF-8:
|
||||
layout: "hu"
|
||||
variant: ""
|
||||
id_ID.UTF-8:
|
||||
layout: "us"
|
||||
variant: ""
|
||||
lv_LV.UTF-8:
|
||||
layout: "lv"
|
||||
variant: ""
|
||||
lt_LT.UTF-8:
|
||||
layout: "lt"
|
||||
variant: ""
|
||||
pl_PL.UTF-8:
|
||||
layout: "pl"
|
||||
variant: ""
|
||||
ru_RU.UTF-8:
|
||||
layout: "us,ru"
|
||||
variant: ""
|
||||
sr_RS:
|
||||
layout: "rs,rs"
|
||||
variant: "latin,"
|
||||
es_ES.UTF-8:
|
||||
layout: "es"
|
||||
variant: ""
|
||||
sv_SE.UTF-8:
|
||||
layout: "se"
|
||||
variant: ""
|
||||
bo_IN:
|
||||
layout: "us,cn"
|
||||
variant: ",tib"
|
||||
uk_UA.UTF-8:
|
||||
layout: "us,ua"
|
||||
variant: ""
|
||||
nb:
|
||||
layout: "us"
|
||||
variant: ""
|
||||
oc:
|
||||
layout: "us"
|
||||
variant: ""
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/bash
|
||||
|
||||
# usage: ./scripts/keyboard-scraper.sh
|
||||
# setup enough of a chroot to run keyboard-configuration.config
|
||||
# and scrape it for keyboard recommendations
|
||||
|
||||
set -eu
|
||||
|
||||
outfile=kbds/keyboard-configuration.yaml
|
||||
langs=$(cat languagelist | cut -d: -f2)
|
||||
|
||||
tmpdir=$(mktemp -d -p $(pwd))
|
||||
trap "rm -fr $tmpdir" EXIT
|
||||
|
||||
if [ ! -f keyboard-configuration.config ] ; then
|
||||
wget https://salsa.debian.org/installer-team/console-setup/-/raw/master/debian/keyboard-configuration.config
|
||||
fi
|
||||
|
||||
# setup prerequisites for the config script
|
||||
mkdir -p $tmpdir/bin
|
||||
cp /usr/bin/busybox $tmpdir/bin/sh
|
||||
ln $tmpdir/bin/sh $tmpdir/bin/sed
|
||||
ln $tmpdir/bin/sh $tmpdir/bin/grep
|
||||
|
||||
mkdir -p $tmpdir/usr/share/debconf
|
||||
touch $tmpdir/usr/share/debconf/confmodule
|
||||
|
||||
mkdir -p $tmpdir/dev
|
||||
sudo mknod -m 666 $tmpdir/dev/null c 1 3
|
||||
|
||||
cp keyboard-configuration.config $tmpdir
|
||||
|
||||
# more prerequisites, and save db_set output for later consumption
|
||||
cat > $tmpdir/stage2 <<EOF
|
||||
all_kbdnames() { :; }
|
||||
db_capb() { :; }
|
||||
db_get() { :; }
|
||||
keyboard_present() { false; }
|
||||
|
||||
dpkg()
|
||||
{
|
||||
echo "$(dpkg --print-architecture)"
|
||||
}
|
||||
|
||||
db_set()
|
||||
{
|
||||
echo "\$1" "\$2" >> /db_set.\$LC_CTYPE
|
||||
}
|
||||
|
||||
# LC_CTYPE is used by the config script to decide which locale we're providing
|
||||
# a keyboard suggestion for.
|
||||
LC_CTYPE="\$1"
|
||||
export LC_CTYPE
|
||||
. /keyboard-configuration.config
|
||||
EOF
|
||||
chmod 755 $tmpdir/stage2
|
||||
|
||||
cat > $outfile <<EOF
|
||||
# File generated by $0, please do not edit manually
|
||||
# Based on output from keyboard-configuration.config
|
||||
EOF
|
||||
|
||||
for locale in $langs ; do
|
||||
echo "$locale"
|
||||
sudo chroot $tmpdir /bin/sh /stage2 "$locale"
|
||||
# transform interesting db_set values into a simplistic yaml format
|
||||
echo "$locale:" >> $outfile
|
||||
awk '
|
||||
/layoutcode/ {print " layout: " "\""$2"\""}
|
||||
/variantcode/ {print " variant: " "\""$2"\""}
|
||||
' < $tmpdir/db_set.$locale >> $outfile
|
||||
done
|
||||
|
||||
echo "output to $outfile"
|
Loading…
Reference in New Issue