Skip to content

Commit 6725a0a

Browse files
committed
feat(jsonschema): export schema for wiring yaml autocompletion
Adds new command to hhfab to export a json schema to validate yaml files with vscode-yaml Signed-off-by: Pau Capdevila <[email protected]>
1 parent 628d374 commit 6725a0a

File tree

6 files changed

+352
-0
lines changed

6 files changed

+352
-0
lines changed

cmd/hhfab/main.go

+13
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,19 @@ func Run(ctx context.Context) error {
582582
return nil
583583
},
584584
},
585+
{
586+
Name: "schema",
587+
Usage: "Generate JSONSchema for Fabricator resources",
588+
Flags: defaultFlags,
589+
Before: before(false),
590+
Action: func(_ *cli.Context) error {
591+
if err := hhfab.WriteJSONSchema(workDir); err != nil {
592+
return fmt.Errorf("generating schema: %w", err)
593+
}
594+
595+
return nil
596+
},
597+
},
585598
{
586599
Name: "versions",
587600
Usage: "print versions of all components",

go.mod

+4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ require (
1919
github.com/diskfs/go-diskfs v1.4.2
2020
github.com/go-logr/logr v1.4.2
2121
github.com/go-playground/validator/v10 v10.25.0
22+
github.com/invopop/jsonschema v0.13.0
2223
github.com/k3s-io/helm-controller v0.16.6
2324
github.com/lmittmann/tint v1.0.7
2425
github.com/manifoldco/promptui v0.9.0
@@ -96,11 +97,13 @@ require (
9697
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 // indirect
9798
github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 // indirect
9899
github.com/aws/smithy-go v1.21.0 // indirect
100+
github.com/bahlo/generic-list-go v0.2.0 // indirect
99101
github.com/beorn7/perks v1.0.1 // indirect
100102
github.com/bodgit/plumbing v1.3.0 // indirect
101103
github.com/bodgit/sevenzip v1.6.0 // indirect
102104
github.com/bodgit/windows v1.0.1 // indirect
103105
github.com/bufbuild/protocompile v0.6.0 // indirect
106+
github.com/buger/jsonparser v1.1.1 // indirect
104107
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
105108
github.com/cespare/xxhash/v2 v2.3.0 // indirect
106109
github.com/chzyer/readline v1.5.1 // indirect
@@ -290,6 +293,7 @@ require (
290293
github.com/vbatts/tar-split v0.11.6 // indirect
291294
github.com/vincent-petithory/dataurl v1.0.0 // indirect
292295
github.com/vishvananda/netns v0.0.4 // indirect
296+
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
293297
github.com/x448/float16 v0.8.4 // indirect
294298
github.com/xanzy/ssh-agent v0.3.3 // indirect
295299
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect

go.sum

+8
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 h1:GNVxIHBTi2EgwCxpNiozhNasMOK+
135135
github.com/aws/aws-sdk-go-v2/service/sts v1.31.0/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI=
136136
github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA=
137137
github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
138+
github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk=
139+
github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg=
138140
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
139141
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
140142
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -148,6 +150,8 @@ github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
148150
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
149151
github.com/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY=
150152
github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE=
153+
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
154+
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
151155
github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
152156
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
153157
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
@@ -516,6 +520,8 @@ github.com/hashicorp/vault/api v1.15.0/go.mod h1:+5YTO09JGn0u+b6ySD/LLVf8WkJCPLA
516520
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
517521
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
518522
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
523+
github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E=
524+
github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=
519525
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
520526
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
521527
github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls=
@@ -848,6 +854,8 @@ github.com/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQ
848854
github.com/vishvananda/netlink v1.3.0/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs=
849855
github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8=
850856
github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
857+
github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc=
858+
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
851859
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
852860
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
853861
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=

0 commit comments

Comments
 (0)