mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-11-14 12:11:12 +03:00
77292a16d6
Follow PEP 0394 and use /usr/bin/env python so that the python in the users venv is respected. Not that the kitty python files are meant to be executed standalone anyway, but, whatever. Fixes #6810
54 lines
1.7 KiB
Python
Executable File
54 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# vim:fileencoding=utf-8
|
|
# License: GPL v3 Copyright: 2019, Kovid Goyal <kovid at kovidgoyal.net>
|
|
|
|
import glob
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
|
|
|
|
def compile_terminfo(base):
|
|
with tempfile.TemporaryDirectory() as tdir:
|
|
proc = subprocess.run(['tic', '-x', f'-o{tdir}', 'terminfo/kitty.terminfo'], capture_output=True)
|
|
if proc.returncode != 0:
|
|
sys.stderr.buffer.write(proc.stderr)
|
|
raise SystemExit(proc.returncode)
|
|
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())
|
|
proc = subprocess.run(['tic', '-CrT0', 'terminfo/kitty.terminfo'], capture_output=True)
|
|
if proc.returncode != 0:
|
|
sys.stderr.buffer.write(proc.stderr)
|
|
raise SystemExit(proc.returncode)
|
|
tcap = proc.stdout.decode('utf-8').splitlines()[-1]
|
|
with open('terminfo/kitty.termcap', 'w') as f:
|
|
f.write(tcap)
|
|
|
|
compile_terminfo(os.path.join(base, 'terminfo'))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
generate_terminfo()
|