From d5401ab20016ced84638faeb32f2c4c1363e377d Mon Sep 17 00:00:00 2001 From: Dawid Dziurla Date: Wed, 16 Jan 2019 18:47:15 +0100 Subject: [PATCH] add script generating keybindings cheatsheet --- scripts/generate_cheatsheet.go | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 scripts/generate_cheatsheet.go diff --git a/scripts/generate_cheatsheet.go b/scripts/generate_cheatsheet.go new file mode 100644 index 000000000..466d26e3d --- /dev/null +++ b/scripts/generate_cheatsheet.go @@ -0,0 +1,63 @@ +// This "script" generates a file called Keybindings_{{.LANG}}.md +// in current working directory. +// +// The content of this generated file is a keybindings cheatsheet. +// +// To generate cheatsheet in english run: +// LANG=en go run scripts/generate_cheatsheet.go + +package main + +import ( + "fmt" + "github.com/jesseduffield/lazygit/pkg/app" + "github.com/jesseduffield/lazygit/pkg/config" + "log" + "os" + "strings" +) + +func writeString(file *os.File, str string) { + _, err := file.WriteString(str) + if err != nil { + log.Fatal(err) + } +} + +func getTitle(mApp *app.App ,viewName string) string { + viewTitle := strings.Title(viewName) + "Title" + translatedTitle := mApp.Tr.SLocalize(viewTitle) + formattedTitle := fmt.Sprintf("\n## %s\n\n", translatedTitle) + return formattedTitle +} + +func main() { + mConfig, _ := config.NewAppConfig("", "", "", "", "", new(bool)) + mApp, _ := app.Setup(mConfig) + lang := mApp.Tr.GetLanguage() + file, _ := os.Create("Keybindings_" + lang + ".md") + current := "" + + writeString(file, fmt.Sprintf("# Lazygit %s\n", mApp.Tr.SLocalize("menu"))) + writeString(file, getTitle(mApp, "global")) + + writeString(file, "
\n")
+
+    for _, binding := range mApp.Gui.GetKeybindings() {
+        if binding.Description == "" {
+            continue
+        }
+
+        if binding.ViewName != current {
+            current = binding.ViewName
+            writeString(file, "
\n") + writeString(file, getTitle(mApp, current)) + writeString(file, "
\n")
+        }
+
+        info := fmt.Sprintf("  %s: %s\n", binding.GetKey(), binding.Description)
+        writeString(file, info)
+    }
+
+    writeString(file, "
\n") +}