From ceeca24205112aa7c0a46aa615c9572f974d93ec Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Mon, 12 Feb 2018 23:10:09 +0100 Subject: terminfo: add scripts/update_terminfo.sh This script updates the built-in terminfo entries. [skip ci] --- scripts/update_terminfo.sh | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 scripts/update_terminfo.sh (limited to 'scripts/update_terminfo.sh') diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh new file mode 100755 index 0000000000..f9b5096f55 --- /dev/null +++ b/scripts/update_terminfo.sh @@ -0,0 +1,81 @@ +#!/usr/bin/env bash +# +# usage: ./scripts/update_terminfo.sh +# +# This script does: +# +# 1. Download Dickey's terminfo.src +# 2. Compile temporary terminfo database from terminfo.src +# 3. Use database to generate src/nvim/tui/terminfo_defs.h +# + +set -e + +url='https://invisible-island.net/datafiles/current/terminfo.src.gz' +target='src/nvim/tui/terminfo_defs.h' + +readonly -A entries=( + [ansi]=ansi_terminfo + [interix]=interix_8colour_terminfo + [iterm2]=iterm_256colour_terminfo + [linux]=linux_16colour_terminfo + [putty-256color]=putty_256colour_terminfo + [rxvt-256color]=rxvt_256colour_terminfo + [screen-256color]=screen_256colour_terminfo + [st-256color]=st_256colour_terminfo + [tmux-256color]=tmux_256colour_terminfo + [vte-256color]=vte_256colour_terminfo + [xterm-256color]=xterm_256colour_terminfo +) + +db="$(mktemp -du)" + +print_bold() { + printf "\\e[1m$*\\e[0m" +} + +cd "$(git rev-parse --show-toplevel)" + +# +# Get terminfo.src +# +print_bold '[*] Get terminfo.src\n' +curl -O "$url" +gunzip -f terminfo.src.gz + +# +# Build terminfo database +# +print_bold '[*] Build terminfo database\n' +tic -x -o "$db" terminfo.src +rm -f terminfo.src + +# +# Write src/nvim/tui/terminfo_defs.h +# +print_bold "[*] Writing $target... " +sorted_terms="$(echo "${!entries[@]}" | tr ' ' '\n' | sort | xargs)" + +cat > "$target" <&2 + continue + fi + echo + infocmp -L -1 -A "$db" "$term" | sed -e '1d' -e 's#^#// #' | tr '\t' ' ' + echo "static const int8_t ${entries[$term]}[] = {" + echo -n " "; od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ',' + echo "};" +done >> "$target" + +print_bold 'done\n' -- cgit