mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-01-08 04:04:22 +02:00
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
// run:
|
|
// LANG=en go run generate_cheatsheet.go
|
|
// to generate Keybindings_en.md file in current directory
|
|
// change LANG to generate cheatsheet in different language (if supported)
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/jesseduffield/lazygit/pkg/app"
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
|
)
|
|
|
|
func main() {
|
|
appConfig, _ := config.NewAppConfig("", "", "", "", "", new(bool))
|
|
a, _ := app.NewApp(appConfig)
|
|
lang := a.Tr.GetLanguage()
|
|
name := "Keybindings_" + lang + ".md"
|
|
bindings := a.Gui.GetKeybindings()
|
|
padWidth := a.Gui.GetMaxKeyLength(bindings)
|
|
file, _ := os.Create(name)
|
|
current := "v"
|
|
content := ""
|
|
title := ""
|
|
|
|
file.WriteString("# Lazygit " + a.Tr.SLocalize("menu"))
|
|
|
|
for _, binding := range bindings {
|
|
if key := a.Gui.GetKey(binding); key != "" && (binding.Description != "" || key == "x") {
|
|
if binding.ViewName != current {
|
|
current = binding.ViewName
|
|
if current == "" {
|
|
title = a.Tr.SLocalize("GlobalTitle")
|
|
} else {
|
|
title = a.Tr.SLocalize(strings.Title(current) + "Title")
|
|
}
|
|
content = fmt.Sprintf("</pre>\n\n## %s\n<pre>\n", title)
|
|
file.WriteString(content)
|
|
}
|
|
// workaround to include menu keybinding in cheatsheet
|
|
// could not add this Description field directly to keybindings.go,
|
|
// because then menu key would be displayed in menu itself and that is undesirable
|
|
if key == "x" {
|
|
binding.Description = a.Tr.SLocalize("menu")
|
|
}
|
|
content = fmt.Sprintf("\t<kbd>%s</kbd>%s %s\n", key, strings.TrimPrefix(utils.WithPadding(key, padWidth), key), binding.Description)
|
|
file.WriteString(content)
|
|
}
|
|
}
|
|
}
|