@@ -16,17 +16,16 @@ import (
1616)
1717
1818type Options struct {
19- DataFile string
20- Output string
19+ DataFile string
20+ Output string
21+ VersionsFile string
2122}
2223
2324// VersionInfo represents the version information for a single version of an API client.
2425type VersionInfo struct {
2526 ReleaseDate string `json:"releaseDate"`
2627 SlaStatus string `json:"slaStatus"`
2728 SlaEndDate string `json:"slaEndDate,omitempty"`
28- // SupportStatus string `json:"supportStatus"`
29- // SupportEndDate string `json:"supportEndDate,omitempty"`
3029}
3130
3231// Version maps a version string to its version information.
@@ -66,6 +65,8 @@ func NewSlaCommand() *cobra.Command {
6665 }
6766
6867 cmd .Flags ().StringVarP (& opts .Output , "output" , "o" , "" , "Output file" )
68+ cmd .Flags ().
69+ StringVarP (& opts .VersionsFile , "versions" , "v" , "" , "Generate file with latest versions" )
6970
7071 return cmd
7172}
@@ -102,6 +103,18 @@ func runCommand(opts *Options) {
102103 if err = renderPage (output , pageTemplate , sorted , funcMap ); err != nil {
103104 log .Fatalf ("error: %v" , err )
104105 }
106+
107+ var versionsOutput io.Writer
108+ if opts .VersionsFile == "" {
109+ versionsOutput = os .Stdout
110+ } else {
111+ versionsOutput , err = os .Create (opts .VersionsFile )
112+ if err != nil {
113+ log .Fatalf ("error: %v" , err )
114+ }
115+ }
116+
117+ renderVersionsFile (versionsOutput , sorted )
105118}
106119
107120// parseVersions reads a JSON file and parses it into a Clients struct.
@@ -177,3 +190,26 @@ func renderPage(
177190
178191 return nil
179192}
193+
194+ func renderVersionsFile (w io.Writer , data []ClientEntry ) {
195+ fmt .Fprintln (w , "export const sdkVersions = {" )
196+
197+ for _ , client := range data {
198+ fmt .Fprintf (w , " %s: {\n " , client .Language )
199+
200+ seenMajors := make (map [string ]bool )
201+
202+ for _ , ver := range client .Versions {
203+ major := semver .Major ("v" + ver .Version )
204+ if ! seenMajors [major ] {
205+ seenMajors [major ] = true
206+
207+ fmt .Fprintf (w , " %s: \" %s\" ,\n " , major , ver .Version )
208+ }
209+ }
210+
211+ fmt .Fprintln (w , " }," )
212+ }
213+
214+ fmt .Fprintln (w , "};" )
215+ }
0 commit comments