diff --git a/gen-go-code.py b/gen-go-code.py index 057430751..51fed7493 100755 --- a/gen-go-code.py +++ b/gen-go-code.py @@ -329,10 +329,11 @@ def kitten_clis() -> None: print('func create_cmd(root *cli.Command, run_func func(*cli.Command, *Options, []string)(int, error)) {') print('ans := root.AddSubCommand(&cli.Command{') print(f'Name: "{kitten}",') - print(f'ShortDescription: "{serialize_as_go_string(kcd["short_desc"])}",') - if kcd['usage']: - print(f'Usage: "[options] {serialize_as_go_string(kcd["usage"])}",') - print(f'HelpText: "{serialize_as_go_string(kcd["help_text"])}",') + if kcd: + print(f'ShortDescription: "{serialize_as_go_string(kcd["short_desc"])}",') + if kcd['usage']: + print(f'Usage: "[options] {serialize_as_go_string(kcd["usage"])}",') + print(f'HelpText: "{serialize_as_go_string(kcd["help_text"])}",') print('Run: func(cmd *cli.Command, args []string) (int, error) {') print('opts := Options{}') print('err := cmd.GetOptionValues(&opts)') @@ -351,6 +352,8 @@ def kitten_clis() -> None: print("clone := root.AddClone(ans.Group, ans)") print('clone.Hidden = false') print(f'clone.Name = "{serialize_as_go_string(kitten.replace("_", "-"))}"') + if not kcd: + print('specialize_command(ans)') print('}') print('type Options struct {') print('\n'.join(od)) diff --git a/shell-integration/ssh/kitty b/shell-integration/ssh/kitty index 89abab2c5..8eb0f59be 100755 --- a/shell-integration/ssh/kitty +++ b/shell-integration/ssh/kitty @@ -24,7 +24,7 @@ exec_kitty() { is_wrapped_kitten() { - wrapped_kittens="clipboard icat unicode_input" + wrapped_kittens="clipboard icat unicode_input ssh" [ -n "$1" ] && { case " $wrapped_kittens " in *" $1 "*) printf "%s" "$1" ;; diff --git a/tools/cmd/ssh/main.go b/tools/cmd/ssh/main.go new file mode 100644 index 000000000..3aea013c6 --- /dev/null +++ b/tools/cmd/ssh/main.go @@ -0,0 +1,25 @@ +// License: GPLv3 Copyright: 2023, Kovid Goyal, + +package ssh + +import ( + "fmt" + + "kitty/tools/cli" +) + +var _ = fmt.Print + +func main(cmd *cli.Command, o *Options, args []string) (rc int, err error) { + return +} + +func EntryPoint(parent *cli.Command) { + create_cmd(parent, main) +} + +func specialize_command(ssh *cli.Command) { + ssh.Usage = "arguments for the ssh command" + ssh.ShortDescription = "Truly convenient SSH" + ssh.HelpText = "The ssh kitten is a thin wrapper around the ssh command. It automatically enables shell integration on the remote host, re-uses existing connections to reduce latency, makes the kitty terminfo database available, etc. It's invocation is identical to the ssh command. For details on its usage, see :doc:`/kittens/ssh`." +} diff --git a/tools/cmd/tool/main.go b/tools/cmd/tool/main.go index 091a8ba87..51798ccb9 100644 --- a/tools/cmd/tool/main.go +++ b/tools/cmd/tool/main.go @@ -10,6 +10,7 @@ import ( "kitty/tools/cmd/clipboard" "kitty/tools/cmd/edit_in_kitty" "kitty/tools/cmd/icat" + "kitty/tools/cmd/ssh" "kitty/tools/cmd/unicode_input" "kitty/tools/cmd/update_self" "kitty/tools/tui" @@ -30,6 +31,8 @@ func KittyToolEntryPoints(root *cli.Command) { clipboard.EntryPoint(root) // icat icat.EntryPoint(root) + // ssh + ssh.EntryPoint(root) // unicode_input unicode_input.EntryPoint(root) // __hold_till_enter__