mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-08-16 18:10:32 +03:00
49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# vim:fileencoding=utf-8
|
|
# License: GPL v3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
import glob
|
|
import os
|
|
import re
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
def compile_terminfo(base):
|
|
with tempfile.TemporaryDirectory() as tdir:
|
|
proc = subprocess.run(['tic', '-x', '-o' + tdir, 'terminfo/kitty.terminfo'], check=True, stderr=subprocess.PIPE)
|
|
regex = '^"terminfo/kitty.terminfo", line [0-9]+, col [0-9]+, terminal \'xterm-kitty\': older tic versions may treat the description field as an alias$'
|
|
for error in proc.stderr.decode('utf-8').splitlines():
|
|
if not re.match(regex, error):
|
|
print(error, file=sys.stderr)
|
|
tfiles = glob.glob(os.path.join(tdir, '*', 'xterm-kitty'))
|
|
if not tfiles:
|
|
raise SystemExit('tic failed to output the compiled kitty terminfo file')
|
|
|
|
tfile = tfiles[0]
|
|
directory, xterm_kitty = os.path.split(tfile)
|
|
_, directory = os.path.split(directory)
|
|
odir = os.path.join(base, directory)
|
|
os.makedirs(odir, exist_ok=True)
|
|
ofile = os.path.join(odir, xterm_kitty)
|
|
shutil.move(tfile, ofile)
|
|
|
|
|
|
def generate_terminfo():
|
|
base = os.path.dirname(os.path.abspath(__file__))
|
|
os.chdir(base)
|
|
sys.path.insert(0, base)
|
|
|
|
from kitty.terminfo import generate_terminfo
|
|
|
|
with open('terminfo/kitty.terminfo', 'w') as f:
|
|
f.write(generate_terminfo())
|
|
|
|
compile_terminfo(os.path.join(base, 'terminfo'))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
generate_terminfo()
|