summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDawid Dziurla <dawidd0811@gmail.com>2019-01-16 18:47:15 +0100
committerJesse Duffield <jessedduffield@gmail.com>2019-01-17 10:11:17 +1100
commitd5401ab20016ced84638faeb32f2c4c1363e377d (patch)
treef2fa96e661541af9608e8b8c77190501ba3f44e0 /scripts
parentb6f8ebc0ca1c4cdaa63bfd12f5507d368171b872 (diff)
add script generating keybindings cheatsheet
Diffstat (limited to 'scripts')
-rw-r--r--scripts/generate_cheatsheet.go63
1 files changed, 63 insertions, 0 deletions
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, "<pre>\n")
+
+ for _, binding := range mApp.Gui.GetKeybindings() {
+ if binding.Description == "" {
+ continue
+ }
+
+ if binding.ViewName != current {
+ current = binding.ViewName
+ writeString(file, "</pre>\n")
+ writeString(file, getTitle(mApp, current))
+ writeString(file, "<pre>\n")
+ }
+
+ info := fmt.Sprintf(" <kbd>%s</kbd>: %s\n", binding.GetKey(), binding.Description)
+ writeString(file, info)
+ }
+
+ writeString(file, "</pre>\n")
+}