Skip to content

Commit ae7de0d

Browse files
committed
Use keyrenamer function in jsonschema config generation
1 parent a51bf12 commit ae7de0d

File tree

15 files changed

+385
-268
lines changed

15 files changed

+385
-268
lines changed

Diff for: go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ require (
2020
github.com/jesseduffield/lazycore v0.0.0-20221012050358-03d2e40243c5
2121
github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e
2222
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0
23-
github.com/karimkhaleel/jsonschema v0.0.0-20231001195015-d933f0d94ea3
23+
github.com/karimkhaleel/jsonschema v0.0.0-20250323054317-7eb70f14797b
2424
github.com/kyokomi/emoji/v2 v2.2.8
2525
github.com/lucasb-eyer/go-colorful v1.2.0
2626
github.com/mattn/go-runewidth v0.0.16

Diff for: go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
200200
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
201201
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
202202
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
203-
github.com/karimkhaleel/jsonschema v0.0.0-20231001195015-d933f0d94ea3 h1:s995u+gNQADMaixtNOs+jilRC/Q78q0UXSI7+4T0cDE=
204-
github.com/karimkhaleel/jsonschema v0.0.0-20231001195015-d933f0d94ea3/go.mod h1:MCbEh21gjOzxc31udr3u4QM9DAdf8TFJCZz3u5hYIxA=
203+
github.com/karimkhaleel/jsonschema v0.0.0-20250323054317-7eb70f14797b h1:fO3alvlIx8s0Ou+lkV6I46UzkUALHhdQYEWWqYMsirY=
204+
github.com/karimkhaleel/jsonschema v0.0.0-20250323054317-7eb70f14797b/go.mod h1:MCbEh21gjOzxc31udr3u4QM9DAdf8TFJCZz3u5hYIxA=
205205
github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY=
206206
github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
207207
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=

Diff for: pkg/config/user_config.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ type KeybindingCommitsConfig struct {
504504
CherryPickCopy string `yaml:"cherryPickCopy"`
505505
PasteCommits string `yaml:"pasteCommits"`
506506
MarkCommitAsBaseForRebase string `yaml:"markCommitAsBaseForRebase"`
507-
CreateTag string `yaml:"tagCommit"`
507+
TagCommit string `yaml:"tagCommit"`
508508
CheckoutCommit string `yaml:"checkoutCommit"`
509509
ResetCherryPick string `yaml:"resetCherryPick"`
510510
CopyCommitAttributeToClipboard string `yaml:"copyCommitAttributeToClipboard"`
@@ -963,7 +963,7 @@ func GetDefaultConfig() *UserConfig {
963963
CherryPickCopy: "C",
964964
PasteCommits: "V",
965965
MarkCommitAsBaseForRebase: "B",
966-
CreateTag: "T",
966+
TagCommit: "T",
967967
CheckoutCommit: "<space>",
968968
ResetCherryPick: "<c-R>",
969969
CopyCommitAttributeToClipboard: "y",

Diff for: pkg/gui/controllers/local_commits_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ func (self *LocalCommitsController) GetKeybindings(opts types.KeybindingsOpts) [
255255
Tooltip: self.c.Tr.RevertCommitTooltip,
256256
},
257257
{
258-
Key: opts.GetKey(opts.Config.Commits.CreateTag),
258+
Key: opts.GetKey(opts.Config.Commits.TagCommit),
259259
Handler: self.withItem(self.createTag),
260260
GetDisabledReason: self.require(self.singleItemSelected()),
261261
Description: self.c.Tr.TagCommit,

Diff for: pkg/integration/tests/commit/create_tag.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var CreateTag = NewIntegrationTest(NewIntegrationTestArgs{
2121
Contains("two").IsSelected(),
2222
Contains("one"),
2323
).
24-
Press(keys.Commits.CreateTag)
24+
Press(keys.Commits.TagCommit)
2525

2626
t.ExpectPopup().CommitMessagePanel().
2727
Title(Equals("Tag name")).

Diff for: pkg/integration/tests/tag/force_tag_annotated.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ var ForceTagAnnotated = NewIntegrationTest(NewIntegrationTestArgs{
2222
Contains("second commit").IsSelected(),
2323
Contains("new-tag").Contains("first commit"),
2424
).
25-
Press(keys.Commits.CreateTag).
25+
Press(keys.Commits.TagCommit).
2626
Tap(func() {
2727
t.ExpectPopup().CommitMessagePanel().
2828
Title(Equals("Tag name")).

Diff for: pkg/integration/tests/tag/force_tag_lightweight.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ var ForceTagLightweight = NewIntegrationTest(NewIntegrationTestArgs{
2222
Contains("second commit").IsSelected(),
2323
Contains("new-tag").Contains("first commit"),
2424
).
25-
Press(keys.Commits.CreateTag).
25+
Press(keys.Commits.TagCommit).
2626
Tap(func() {
2727
t.ExpectPopup().CommitMessagePanel().
2828
Title(Equals("Tag name")).

Diff for: pkg/jsonschema/generate.go

+13-7
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,14 @@ func getSubSchema(rootSchema, parentSchema *jsonschema.Schema, key string) *json
5252
}
5353

5454
func customReflect(v *config.UserConfig) *jsonschema.Schema {
55-
r := &jsonschema.Reflector{FieldNameTag: "yaml", RequiredFromJSONSchemaTags: true}
55+
yamlToFieldNames := make(map[string]string)
56+
keyNamer := func(yamlName string, originalFieldName string) string {
57+
yamlToFieldNames[yamlName] = originalFieldName
58+
yamlToFieldNames[originalFieldName] = yamlName
59+
return yamlName
60+
}
61+
62+
r := &jsonschema.Reflector{FieldNameTag: "yaml", RequiredFromJSONSchemaTags: true, KeyNamerWithOriginalFieldName: keyNamer}
5663
if err := r.AddGoComments("github.com/jesseduffield/lazygit/pkg/config", "../config"); err != nil {
5764
panic(err)
5865
}
@@ -63,15 +70,13 @@ func customReflect(v *config.UserConfig) *jsonschema.Schema {
6370

6471
defaultValue := reflect.ValueOf(defaultConfig).Elem()
6572

66-
yamlToFieldNames := lo.Invert(userConfigSchema.OriginalPropertiesMapping)
67-
6873
for pair := userConfigSchema.Properties.Oldest(); pair != nil; pair = pair.Next() {
6974
yamlName := pair.Key
7075
fieldName := yamlToFieldNames[yamlName]
7176

7277
subSchema := getSubSchema(schema, userConfigSchema, yamlName)
7378

74-
setDefaultVals(schema, subSchema, defaultValue.FieldByName(fieldName).Interface())
79+
setDefaultVals(schema, subSchema, defaultValue.FieldByName(fieldName).Interface(), yamlToFieldNames)
7580
}
7681

7782
return schema
@@ -87,7 +92,7 @@ func filterOutDevComments(r *jsonschema.Reflector) {
8792
}
8893
}
8994

90-
func setDefaultVals(rootSchema, schema *jsonschema.Schema, defaults any) {
95+
func setDefaultVals(rootSchema, schema *jsonschema.Schema, defaults any, yamlToFieldNames map[string]string) {
9196
t := reflect.TypeOf(defaults)
9297
v := reflect.ValueOf(defaults)
9398

@@ -118,15 +123,16 @@ func setDefaultVals(rootSchema, schema *jsonschema.Schema, defaults any) {
118123
value := v.Field(i).Interface()
119124
parentKey := t.Field(i).Name
120125

121-
key, ok := schema.OriginalPropertiesMapping[parentKey]
126+
key, ok := yamlToFieldNames[parentKey]
122127
if !ok {
128+
fmt.Println(key)
123129
continue
124130
}
125131

126132
subSchema := getSubSchema(rootSchema, schema, key)
127133

128134
if isStruct(value) {
129-
setDefaultVals(rootSchema, subSchema, value)
135+
setDefaultVals(rootSchema, subSchema, value, yamlToFieldNames)
130136
} else if !isZeroValue(value) {
131137
subSchema.Default = value
132138
}

Diff for: vendor/github.com/karimkhaleel/jsonschema/.golangci.yml

+10-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/karimkhaleel/jsonschema/README.md

+11-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/karimkhaleel/jsonschema/comment_extractor.go

-93
This file was deleted.

0 commit comments

Comments
 (0)