Skip to content

Commit 86e1b92

Browse files
committed
chore: generate countries.tsx from go code
1 parent 10d718f commit 86e1b92

File tree

6 files changed

+585
-28
lines changed

6 files changed

+585
-28
lines changed

cli/login.go

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -530,36 +530,13 @@ func promptDevelopers(inv *serpent.Invocation) (string, error) {
530530
}
531531

532532
func promptCountry(inv *serpent.Invocation) (string, error) {
533-
countries := []string{
534-
"Afghanistan", "Åland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda",
535-
"Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas", "Bahrain", "Bangladesh", "Barbados",
536-
"Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia, Plurinational State of", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana",
537-
"Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada",
538-
"Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros",
539-
"Congo", "Congo, the Democratic Republic of the", "Cook Islands", "Costa Rica", "Côte d'Ivoire", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic",
540-
"Denmark", "Djibouti", "Dominica", "Dominican Republic", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia",
541-
"Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon",
542-
"Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam",
543-
"Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State)", "Honduras", "Hong Kong",
544-
"Hungary", "Iceland", "India", "Indonesia", "Iran, Islamic Republic of", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy",
545-
"Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People's Republic of", "Korea, Republic of", "Kuwait",
546-
"Kyrgyzstan", "Lao People's Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
547-
"Macao", "Macedonia, the Former Yugoslav Republic of", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique",
548-
"Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia, Federated States of", "Moldova, Republic of", "Monaco", "Mongolia", "Montenegro", "Montserrat",
549-
"Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua",
550-
"Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestine, State of",
551-
"Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar",
552-
"Réunion", "Romania", "Russian Federation", "Rwanda", "Saint Barthélemy", "Saint Helena, Ascension and Tristan da Cunha", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin (French part)", "Saint Pierre and Miquelon",
553-
"Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore",
554-
"Sint Maarten (Dutch part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Sudan", "Spain", "Sri Lanka",
555-
"Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Taiwan, Province of China", "Tajikistan", "Tanzania, United Republic of",
556-
"Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands",
557-
"Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan", "Vanuatu",
558-
"Venezuela, Bolivarian Republic of", "Vietnam", "Virgin Islands, British", "Virgin Islands, U.S.", "Wallis and Futuna", "Western Sahara", "Yemen", "Zambia", "Zimbabwe",
533+
options := make([]string, len(codersdk.Countries))
534+
for i, country := range codersdk.Countries {
535+
options[i] = country.Name
559536
}
560537

561538
selection, err := cliui.Select(inv, cliui.SelectOptions{
562-
Options: countries,
539+
Options: options,
563540
Message: "Select the country:",
564541
HideSearch: false,
565542
})

codersdk/countries.go

Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
package codersdk
2+
3+
var Countries = []Country{
4+
{Name: "Afghanistan", Flag: "🇦🇫"},
5+
{Name: "Åland Islands", Flag: "🇦🇽"},
6+
{Name: "Albania", Flag: "🇦🇱"},
7+
{Name: "Algeria", Flag: "🇩🇿"},
8+
{Name: "American Samoa", Flag: "🇦🇸"},
9+
{Name: "Andorra", Flag: "🇦🇩"},
10+
{Name: "Angola", Flag: "🇦🇴"},
11+
{Name: "Anguilla", Flag: "🇦🇮"},
12+
{Name: "Antarctica", Flag: "🇦🇶"},
13+
{Name: "Antigua and Barbuda", Flag: "🇦🇬"},
14+
{Name: "Argentina", Flag: "🇦🇷"},
15+
{Name: "Armenia", Flag: "🇦🇲"},
16+
{Name: "Aruba", Flag: "🇦🇼"},
17+
{Name: "Australia", Flag: "🇦🇺"},
18+
{Name: "Austria", Flag: "🇦🇹"},
19+
{Name: "Azerbaijan", Flag: "🇦🇿"},
20+
{Name: "Bahamas", Flag: "🇧🇸"},
21+
{Name: "Bahrain", Flag: "🇧🇭"},
22+
{Name: "Bangladesh", Flag: "🇧🇩"},
23+
{Name: "Barbados", Flag: "🇧🇧"},
24+
{Name: "Belarus", Flag: "🇧🇾"},
25+
{Name: "Belgium", Flag: "🇧🇪"},
26+
{Name: "Belize", Flag: "🇧🇿"},
27+
{Name: "Benin", Flag: "🇧🇯"},
28+
{Name: "Bermuda", Flag: "🇧🇲"},
29+
{Name: "Bhutan", Flag: "🇧🇹"},
30+
{Name: "Bolivia, Plurinational State of", Flag: "🇧🇴"},
31+
{Name: "Bonaire, Sint Eustatius and Saba", Flag: "🇧🇶"},
32+
{Name: "Bosnia and Herzegovina", Flag: "🇧🇦"},
33+
{Name: "Botswana", Flag: "🇧🇼"},
34+
{Name: "Bouvet Island", Flag: "🇧🇻"},
35+
{Name: "Brazil", Flag: "🇧🇷"},
36+
{Name: "British Indian Ocean Territory", Flag: "🇮🇴"},
37+
{Name: "Brunei Darussalam", Flag: "🇧🇳"},
38+
{Name: "Bulgaria", Flag: "🇧🇬"},
39+
{Name: "Burkina Faso", Flag: "🇧🇫"},
40+
{Name: "Burundi", Flag: "🇧🇮"},
41+
{Name: "Cambodia", Flag: "🇰🇭"},
42+
{Name: "Cameroon", Flag: "🇨🇲"},
43+
{Name: "Canada", Flag: "🇨🇦"},
44+
{Name: "Cape Verde", Flag: "🇨🇻"},
45+
{Name: "Cayman Islands", Flag: "🇰🇾"},
46+
{Name: "Central African Republic", Flag: "🇨🇫"},
47+
{Name: "Chad", Flag: "🇹🇩"},
48+
{Name: "Chile", Flag: "🇨🇱"},
49+
{Name: "China", Flag: "🇨🇳"},
50+
{Name: "Christmas Island", Flag: "🇨🇽"},
51+
{Name: "Cocos (Keeling) Islands", Flag: "🇨🇨"},
52+
{Name: "Colombia", Flag: "🇨🇴"},
53+
{Name: "Comoros", Flag: "🇰🇲"},
54+
{Name: "Congo", Flag: "🇨🇬"},
55+
{Name: "Congo, the Democratic Republic of the", Flag: "🇨🇩"},
56+
{Name: "Cook Islands", Flag: "🇨🇰"},
57+
{Name: "Costa Rica", Flag: "🇨🇷"},
58+
{Name: "Côte d'Ivoire", Flag: "🇨🇮"},
59+
{Name: "Croatia", Flag: "🇭🇷"},
60+
{Name: "Cuba", Flag: "🇨🇺"},
61+
{Name: "Curaçao", Flag: "🇨🇼"},
62+
{Name: "Cyprus", Flag: "🇨🇾"},
63+
{Name: "Czech Republic", Flag: "🇨🇿"},
64+
{Name: "Denmark", Flag: "🇩🇰"},
65+
{Name: "Djibouti", Flag: "🇩🇯"},
66+
{Name: "Dominica", Flag: "🇩🇲"},
67+
{Name: "Dominican Republic", Flag: "🇩🇴"},
68+
{Name: "Ecuador", Flag: "🇪🇨"},
69+
{Name: "Egypt", Flag: "🇪🇬"},
70+
{Name: "El Salvador", Flag: "🇸🇻"},
71+
{Name: "Equatorial Guinea", Flag: "🇬🇶"},
72+
{Name: "Eritrea", Flag: "🇪🇷"},
73+
{Name: "Estonia", Flag: "🇪🇪"},
74+
{Name: "Ethiopia", Flag: "🇪🇹"},
75+
{Name: "Falkland Islands (Malvinas)", Flag: "🇫🇰"},
76+
{Name: "Faroe Islands", Flag: "🇫🇴"},
77+
{Name: "Fiji", Flag: "🇫🇯"},
78+
{Name: "Finland", Flag: "🇫🇮"},
79+
{Name: "France", Flag: "🇫🇷"},
80+
{Name: "French Guiana", Flag: "🇬🇫"},
81+
{Name: "French Polynesia", Flag: "🇵🇫"},
82+
{Name: "French Southern Territories", Flag: "🇹🇫"},
83+
{Name: "Gabon", Flag: "🇬🇦"},
84+
{Name: "Gambia", Flag: "🇬🇲"},
85+
{Name: "Georgia", Flag: "🇬🇪"},
86+
{Name: "Germany", Flag: "🇩🇪"},
87+
{Name: "Ghana", Flag: "🇬🇭"},
88+
{Name: "Gibraltar", Flag: "🇬🇮"},
89+
{Name: "Greece", Flag: "🇬🇷"},
90+
{Name: "Greenland", Flag: "🇬🇱"},
91+
{Name: "Grenada", Flag: "🇬🇩"},
92+
{Name: "Guadeloupe", Flag: "🇬🇵"},
93+
{Name: "Guam", Flag: "🇬🇺"},
94+
{Name: "Guatemala", Flag: "🇬🇹"},
95+
{Name: "Guernsey", Flag: "🇬🇬"},
96+
{Name: "Guinea", Flag: "🇬🇳"},
97+
{Name: "Guinea-Bissau", Flag: "🇬🇼"},
98+
{Name: "Guyana", Flag: "🇬🇾"},
99+
{Name: "Haiti", Flag: "🇭🇹"},
100+
{Name: "Heard Island and McDonald Islands", Flag: "🇭🇲"},
101+
{Name: "Holy See (Vatican City State)", Flag: "🇻🇦"},
102+
{Name: "Honduras", Flag: "🇭🇳"},
103+
{Name: "Hong Kong", Flag: "🇭🇰"},
104+
{Name: "Hungary", Flag: "🇭🇺"},
105+
{Name: "Iceland", Flag: "🇮🇸"},
106+
{Name: "India", Flag: "🇮🇳"},
107+
{Name: "Indonesia", Flag: "🇮🇩"},
108+
{Name: "Iran, Islamic Republic of", Flag: "🇮🇷"},
109+
{Name: "Iraq", Flag: "🇮🇶"},
110+
{Name: "Ireland", Flag: "🇮🇪"},
111+
{Name: "Isle of Man", Flag: "🇮🇲"},
112+
{Name: "Israel", Flag: "🇮🇱"},
113+
{Name: "Italy", Flag: "🇮🇹"},
114+
{Name: "Jamaica", Flag: "🇯🇲"},
115+
{Name: "Japan", Flag: "🇯🇵"},
116+
{Name: "Jersey", Flag: "🇯🇪"},
117+
{Name: "Jordan", Flag: "🇯🇴"},
118+
{Name: "Kazakhstan", Flag: "🇰🇿"},
119+
{Name: "Kenya", Flag: "🇰🇪"},
120+
{Name: "Kiribati", Flag: "🇰🇮"},
121+
{Name: "Korea, Democratic People's Republic of", Flag: "🇰🇵"},
122+
{Name: "Korea, Republic of", Flag: "🇰🇷"},
123+
{Name: "Kuwait", Flag: "🇰🇼"},
124+
{Name: "Kyrgyzstan", Flag: "🇰🇬"},
125+
{Name: "Lao People's Democratic Republic", Flag: "🇱🇦"},
126+
{Name: "Latvia", Flag: "🇱🇻"},
127+
{Name: "Lebanon", Flag: "🇱🇧"},
128+
{Name: "Lesotho", Flag: "🇱🇸"},
129+
{Name: "Liberia", Flag: "🇱🇷"},
130+
{Name: "Libya", Flag: "🇱🇾"},
131+
{Name: "Liechtenstein", Flag: "🇱🇮"},
132+
{Name: "Lithuania", Flag: "🇱🇹"},
133+
{Name: "Luxembourg", Flag: "🇱🇺"},
134+
{Name: "Macao", Flag: "🇲🇴"},
135+
{Name: "Macedonia, the Former Yugoslav Republic of", Flag: "🇲🇰"},
136+
{Name: "Madagascar", Flag: "🇲🇬"},
137+
{Name: "Malawi", Flag: "🇲🇼"},
138+
{Name: "Malaysia", Flag: "🇲🇾"},
139+
{Name: "Maldives", Flag: "🇲🇻"},
140+
{Name: "Mali", Flag: "🇲🇱"},
141+
{Name: "Malta", Flag: "🇲🇹"},
142+
{Name: "Marshall Islands", Flag: "🇲🇭"},
143+
{Name: "Martinique", Flag: "🇲🇶"},
144+
{Name: "Mauritania", Flag: "🇲🇷"},
145+
{Name: "Mauritius", Flag: "🇲🇺"},
146+
{Name: "Mayotte", Flag: "🇾🇹"},
147+
{Name: "Mexico", Flag: "🇲🇽"},
148+
{Name: "Micronesia, Federated States of", Flag: "🇫🇲"},
149+
{Name: "Moldova, Republic of", Flag: "🇲🇩"},
150+
{Name: "Monaco", Flag: "🇲🇨"},
151+
{Name: "Mongolia", Flag: "🇲🇳"},
152+
{Name: "Montenegro", Flag: "🇲🇪"},
153+
{Name: "Montserrat", Flag: "🇲🇸"},
154+
{Name: "Morocco", Flag: "🇲🇦"},
155+
{Name: "Mozambique", Flag: "🇲🇿"},
156+
{Name: "Myanmar", Flag: "🇲🇲"},
157+
{Name: "Namibia", Flag: "🇳🇦"},
158+
{Name: "Nauru", Flag: "🇳🇷"},
159+
{Name: "Nepal", Flag: "🇳🇵"},
160+
{Name: "Netherlands", Flag: "🇳🇱"},
161+
{Name: "New Caledonia", Flag: "🇳🇨"},
162+
{Name: "New Zealand", Flag: "🇳🇿"},
163+
{Name: "Nicaragua", Flag: "🇳🇮"},
164+
{Name: "Niger", Flag: "🇳🇪"},
165+
{Name: "Nigeria", Flag: "🇳🇬"},
166+
{Name: "Niue", Flag: "🇳🇺"},
167+
{Name: "Norfolk Island", Flag: "🇳🇫"},
168+
{Name: "Northern Mariana Islands", Flag: "🇲🇵"},
169+
{Name: "Norway", Flag: "🇳🇴"},
170+
{Name: "Oman", Flag: "🇴🇲"},
171+
{Name: "Pakistan", Flag: "🇵🇰"},
172+
{Name: "Palau", Flag: "🇵🇼"},
173+
{Name: "Palestine, State of", Flag: "🇵🇸"},
174+
{Name: "Panama", Flag: "🇵🇦"},
175+
{Name: "Papua New Guinea", Flag: "🇵🇬"},
176+
{Name: "Paraguay", Flag: "🇵🇾"},
177+
{Name: "Peru", Flag: "🇵🇪"},
178+
{Name: "Philippines", Flag: "🇵🇭"},
179+
{Name: "Pitcairn", Flag: "🇵🇳"},
180+
{Name: "Poland", Flag: "🇵🇱"},
181+
{Name: "Portugal", Flag: "🇵🇹"},
182+
{Name: "Puerto Rico", Flag: "🇵🇷"},
183+
{Name: "Qatar", Flag: "🇶🇦"},
184+
{Name: "Réunion", Flag: "🇷🇪"},
185+
{Name: "Romania", Flag: "🇷🇴"},
186+
{Name: "Russian Federation", Flag: "🇷🇺"},
187+
{Name: "Rwanda", Flag: "🇷🇼"},
188+
{Name: "Saint Barthélemy", Flag: "🇧🇱"},
189+
{Name: "Saint Helena, Ascension and Tristan da Cunha", Flag: "🇸🇭"},
190+
{Name: "Saint Kitts and Nevis", Flag: "🇰🇳"},
191+
{Name: "Saint Lucia", Flag: "🇱🇨"},
192+
{Name: "Saint Martin (French part)", Flag: "🇲🇫"},
193+
{Name: "Saint Pierre and Miquelon", Flag: "🇵🇲"},
194+
{Name: "Saint Vincent and the Grenadines", Flag: "🇻🇨"},
195+
{Name: "Samoa", Flag: "🇼🇸"},
196+
{Name: "San Marino", Flag: "🇸🇲"},
197+
{Name: "Sao Tome and Principe", Flag: "🇸🇹"},
198+
{Name: "Saudi Arabia", Flag: "🇸🇦"},
199+
{Name: "Senegal", Flag: "🇸🇳"},
200+
{Name: "Serbia", Flag: "🇷🇸"},
201+
{Name: "Seychelles", Flag: "🇸🇨"},
202+
{Name: "Sierra Leone", Flag: "🇸🇱"},
203+
{Name: "Singapore", Flag: "🇸🇬"},
204+
{Name: "Sint Maarten (Dutch part)", Flag: "🇸🇽"},
205+
{Name: "Slovakia", Flag: "🇸🇰"},
206+
{Name: "Slovenia", Flag: "🇸🇮"},
207+
{Name: "Solomon Islands", Flag: "🇸🇧"},
208+
{Name: "Somalia", Flag: "🇸🇴"},
209+
{Name: "South Africa", Flag: "🇿🇦"},
210+
{Name: "South Georgia and the South Sandwich Islands", Flag: "🇬🇸"},
211+
{Name: "South Sudan", Flag: "🇸🇸"},
212+
{Name: "Spain", Flag: "🇪🇸"},
213+
{Name: "Sri Lanka", Flag: "🇱🇰"},
214+
{Name: "Sudan", Flag: "🇸🇩"},
215+
{Name: "Suriname", Flag: "🇸🇷"},
216+
{Name: "Svalbard and Jan Mayen", Flag: "🇸🇯"},
217+
{Name: "Swaziland", Flag: "🇸🇿"},
218+
{Name: "Sweden", Flag: "🇸🇪"},
219+
{Name: "Switzerland", Flag: "🇨🇭"},
220+
{Name: "Syrian Arab Republic", Flag: "🇸🇾"},
221+
{Name: "Taiwan, Province of China", Flag: "🇹🇼"},
222+
{Name: "Tajikistan", Flag: "🇹🇯"},
223+
{Name: "Tanzania, United Republic of", Flag: "🇹🇿"},
224+
{Name: "Thailand", Flag: "🇹🇭"},
225+
{Name: "Timor-Leste", Flag: "🇹🇱"},
226+
{Name: "Togo", Flag: "🇹🇬"},
227+
{Name: "Tokelau", Flag: "🇹🇰"},
228+
{Name: "Tonga", Flag: "🇹🇴"},
229+
{Name: "Trinidad and Tobago", Flag: "🇹🇹"},
230+
{Name: "Tunisia", Flag: "🇹🇳"},
231+
{Name: "Turkey", Flag: "🇹🇷"},
232+
{Name: "Turkmenistan", Flag: "🇹🇲"},
233+
{Name: "Turks and Caicos Islands", Flag: "🇹🇨"},
234+
{Name: "Tuvalu", Flag: "🇹🇻"},
235+
{Name: "Uganda", Flag: "🇺🇬"},
236+
{Name: "Ukraine", Flag: "🇺🇦"},
237+
{Name: "United Arab Emirates", Flag: "🇦🇪"},
238+
{Name: "United Kingdom", Flag: "🇬🇧"},
239+
{Name: "United States", Flag: "🇺🇸"},
240+
{Name: "United States Minor Outlying Islands", Flag: "🇺🇲"},
241+
{Name: "Uruguay", Flag: "🇺🇾"},
242+
{Name: "Uzbekistan", Flag: "🇺🇿"},
243+
{Name: "Vanuatu", Flag: "🇻🇺"},
244+
{Name: "Venezuela, Bolivarian Republic of", Flag: "🇻🇪"},
245+
{Name: "Vietnam", Flag: "🇻🇳"},
246+
{Name: "Virgin Islands, British", Flag: "🇻🇬"},
247+
{Name: "Virgin Islands, U.S.", Flag: "🇻🇮"},
248+
{Name: "Wallis and Futuna", Flag: "🇼🇫"},
249+
{Name: "Western Sahara", Flag: "🇪🇭"},
250+
{Name: "Yemen", Flag: "🇾🇪"},
251+
{Name: "Zambia", Flag: "🇿🇲"},
252+
{Name: "Zimbabwe", Flag: "🇿🇼"},
253+
}
254+
255+
// @typescript-ignore Country
256+
type Country struct {
257+
Name string `json:"name"`
258+
Flag string `json:"flag"`
259+
}

scripts/apitypings/main.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"bytes"
55
"context"
6+
"encoding/json"
67
"fmt"
78
"go/types"
89
"os"
@@ -24,6 +25,7 @@ import (
2425
"cdr.dev/slog"
2526
"cdr.dev/slog/sloggers/sloghuman"
2627
"github.com/coder/coder/v2/coderd/util/slice"
28+
"github.com/coder/coder/v2/codersdk"
2729
)
2830

2931
var (
@@ -57,6 +59,14 @@ func main() {
5759
}
5860

5961
_, _ = fmt.Print("// Code generated by 'make site/src/api/typesGenerated.ts'. DO NOT EDIT.\n\n")
62+
63+
countriesTS, err := generateSliceOfObjectsTypeScript("countries", codersdk.Countries)
64+
if err != nil {
65+
log.Fatal(ctx, fmt.Sprintf("generate countries typeScript: %s", err.Error()))
66+
}
67+
_, _ = fmt.Print("// The code below is generated from codersdk/countries.go.\n")
68+
_, _ = fmt.Print(countriesTS, "\n")
69+
6070
for _, baseDir := range baseDirs {
6171
_, _ = fmt.Printf("// The code below is generated from %s.\n\n", strings.TrimPrefix(baseDir, "./"))
6272
output, err := Generate(baseDir, external...)
@@ -1105,3 +1115,26 @@ func (Generator) isBuiltIn(name string) (bool, string) {
11051115
func indentedComment(comment string) string {
11061116
return fmt.Sprintf("%s// %s", indent, comment)
11071117
}
1118+
1119+
func generateSliceOfObjectsTypeScript(name string, data interface{}) (string, error) {
1120+
var sb strings.Builder
1121+
_, _ = sb.WriteString(fmt.Sprintf("export const %s = [\n", name))
1122+
1123+
val := reflect.ValueOf(data)
1124+
if val.Kind() != reflect.Slice {
1125+
return "", xerrors.New("data must be a slice")
1126+
}
1127+
1128+
for i := 0; i < val.Len(); i++ {
1129+
item := val.Index(i).Interface()
1130+
jsonBytes, err := json.Marshal(item)
1131+
if err != nil {
1132+
return "", xerrors.Errorf("marshal item: %w", err)
1133+
}
1134+
_, _ = sb.WriteString("\t")
1135+
_, _ = sb.Write(jsonBytes)
1136+
_, _ = sb.WriteString(",\n")
1137+
}
1138+
_, _ = sb.WriteString("]\n\n")
1139+
return sb.String(), nil
1140+
}

0 commit comments

Comments
 (0)