Port recent changes from cli.py to Go
This commit is contained in:
parent
9d56f8eed2
commit
7bb310d3af
18
gen-rc-go.py
18
gen-rc-go.py
@ -1,6 +1,7 @@
|
|||||||
#!./kitty/launcher/kitty +launch
|
#!./kitty/launcher/kitty +launch
|
||||||
# License: GPLv3 Copyright: 2022, Kovid Goyal <kovid at kovidgoyal.net>
|
# License: GPLv3 Copyright: 2022, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
from typing import Dict, List, Tuple, Union
|
from typing import Dict, List, Tuple, Union
|
||||||
@ -8,9 +9,11 @@ from typing import Dict, List, Tuple, Union
|
|||||||
import kitty.constants as kc
|
import kitty.constants as kc
|
||||||
from kittens.tui.operations import Mode
|
from kittens.tui.operations import Mode
|
||||||
from kitty.cli import OptionDict, OptionSpecSeq, parse_option_spec
|
from kitty.cli import OptionDict, OptionSpecSeq, parse_option_spec
|
||||||
from kitty.rc.base import RemoteCommand, all_command_names, command_for_name
|
|
||||||
from kitty.key_names import functional_key_name_aliases, character_key_name_aliases
|
|
||||||
from kitty.key_encoding import config_mod_map
|
from kitty.key_encoding import config_mod_map
|
||||||
|
from kitty.key_names import (
|
||||||
|
character_key_name_aliases, functional_key_name_aliases
|
||||||
|
)
|
||||||
|
from kitty.rc.base import RemoteCommand, all_command_names, command_for_name
|
||||||
|
|
||||||
|
|
||||||
def serialize_as_go_string(x: str) -> str:
|
def serialize_as_go_string(x: str) -> str:
|
||||||
@ -198,7 +201,16 @@ def serialize_go_dict(x: Union[Dict[str, int], Dict[int, str], Dict[int, int], D
|
|||||||
return '{' + ', '.join(ans) + '}'
|
return '{' + ', '.join(ans) + '}'
|
||||||
|
|
||||||
|
|
||||||
|
def load_ref_map() -> Dict[str, Dict[str, str]]:
|
||||||
|
with open('kitty/docs_ref_map_generated.h') as f:
|
||||||
|
raw = f.read()
|
||||||
|
raw = raw.split('{', 1)[1].split('}', 1)[0]
|
||||||
|
data = json.loads(bytes(bytearray(json.loads(f'[{raw}]'))))
|
||||||
|
return data # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
|
ref_map = load_ref_map()
|
||||||
with open('constants_generated.go', 'w') as f:
|
with open('constants_generated.go', 'w') as f:
|
||||||
dp = ", ".join(map(lambda x: f'"{serialize_as_go_string(x)}"', kc.default_pager_for_help))
|
dp = ", ".join(map(lambda x: f'"{serialize_as_go_string(x)}"', kc.default_pager_for_help))
|
||||||
f.write(f'''\
|
f.write(f'''\
|
||||||
@ -220,6 +232,8 @@ var DefaultPager []string = []string{{ {dp} }}
|
|||||||
var FunctionalKeyNameAliases = map[string]string{serialize_go_dict(functional_key_name_aliases)}
|
var FunctionalKeyNameAliases = map[string]string{serialize_go_dict(functional_key_name_aliases)}
|
||||||
var CharacterKeyNameAliases = map[string]string{serialize_go_dict(character_key_name_aliases)}
|
var CharacterKeyNameAliases = map[string]string{serialize_go_dict(character_key_name_aliases)}
|
||||||
var ConfigModMap = map[string]uint16{serialize_go_dict(config_mod_map)}
|
var ConfigModMap = map[string]uint16{serialize_go_dict(config_mod_map)}
|
||||||
|
var RefMap = map[string]string{serialize_go_dict(ref_map['ref'])}
|
||||||
|
var DocTitleMap = map[string]string{serialize_go_dict(ref_map['doc'])}
|
||||||
''')
|
''')
|
||||||
with open('tools/cmd/at/template.go') as f:
|
with open('tools/cmd/at/template.go') as f:
|
||||||
template = f.read()
|
template = f.read()
|
||||||
|
|||||||
2
setup.py
2
setup.py
@ -883,7 +883,7 @@ def update_go_generated_files(args: Options, kitty_exe: str) -> None:
|
|||||||
rc_sources = [x for x in glob.glob('kitty/rc/*.py') if os.path.basename(x) not in ('base.py', '__init__.py')]
|
rc_sources = [x for x in glob.glob('kitty/rc/*.py') if os.path.basename(x) not in ('base.py', '__init__.py')]
|
||||||
rc_objects = glob.glob('tools/cmd/at/*_generated.go')
|
rc_objects = glob.glob('tools/cmd/at/*_generated.go')
|
||||||
generated = rc_objects + glob.glob('constants_generated.go')
|
generated = rc_objects + glob.glob('constants_generated.go')
|
||||||
sources = ['gen-rc-go.py', 'kitty/constants.py', 'setup.py', 'tools/cmd/at/template.go'] + rc_sources
|
sources = ['gen-rc-go.py', 'kitty/constants.py', 'setup.py', 'kitty/docs_ref_map_generated.h', 'tools/cmd/at/template.go'] + rc_sources
|
||||||
if generated:
|
if generated:
|
||||||
oldest_generated = min(map(os.path.getmtime, generated))
|
oldest_generated = min(map(os.path.getmtime, generated))
|
||||||
newest_source = max(map(os.path.getmtime, sources))
|
newest_source = max(map(os.path.getmtime, sources))
|
||||||
|
|||||||
@ -273,7 +273,20 @@ func prettify(text string) string {
|
|||||||
case "env", "envvar":
|
case "env", "envvar":
|
||||||
return ref_hyperlink(val, "envvar-")
|
return ref_hyperlink(val, "envvar-")
|
||||||
case "doc":
|
case "doc":
|
||||||
|
text, target := text_and_target(val)
|
||||||
|
if text == target {
|
||||||
|
target = strings.Trim(target, "/")
|
||||||
|
if title, ok := kitty.DocTitleMap[target]; ok {
|
||||||
|
val = title + " <" + target + ">"
|
||||||
|
}
|
||||||
|
}
|
||||||
return ref_hyperlink(val, "doc-")
|
return ref_hyperlink(val, "doc-")
|
||||||
|
case "iss":
|
||||||
|
return ref_hyperlink(val, "issues-")
|
||||||
|
case "pull":
|
||||||
|
return ref_hyperlink(val, "pull-")
|
||||||
|
case "disc":
|
||||||
|
return ref_hyperlink(val, "discussions-")
|
||||||
case "ref":
|
case "ref":
|
||||||
return ref_hyperlink(val, "")
|
return ref_hyperlink(val, "")
|
||||||
case "ac":
|
case "ac":
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user