summaryrefslogtreecommitdiffstats
path: root/scripts/generate_cheatsheet.go
blob: 466d26e3d2276426abe8aedc3f1385dcaace2e37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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")
}