Skip to content

Commit ac5fa63

Browse files
authored
fix: v1 component JSON (#1571)
1 parent 9740f91 commit ac5fa63

File tree

7 files changed

+198
-125
lines changed

7 files changed

+198
-125
lines changed

cli/cmd/component.go

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ func listComponents() error {
366366
}
367367

368368
if cli.JSONOutput() {
369-
return cli.OutputJSON(catalog)
369+
return CDKComponentsJSON(catalog)
370370
}
371371

372372
if catalog.ComponentCount() == 0 {
@@ -529,7 +529,7 @@ func showComponent(args []string) error {
529529
}
530530

531531
if cli.JSONOutput() {
532-
return cli.OutputJSON(component)
532+
return CDKComponentJSON(component)
533533
}
534534

535535
printComponent(component.PrintSummary())
@@ -1224,18 +1224,15 @@ func LoadCatalog(componentName string, getAllVersions bool) (*lwcomponent.Catalo
12241224
return nil, err
12251225
}
12261226

1227-
vers, err := catalog.ListComponentVersions(component)
1228-
if err != nil {
1229-
return nil, errors.Wrap(err, fmt.Sprintf("unable to fetch component '%s' versions", componentName))
1230-
}
1227+
if component.HostInfo == nil || (component.HostInfo != nil && !component.HostInfo.Development()) {
1228+
vers, err := catalog.ListComponentVersions(component)
1229+
if err != nil {
1230+
return nil, errors.Wrap(err, fmt.Sprintf("unable to fetch component '%s' versions", componentName))
1231+
}
12311232

1232-
component.ApiInfo.AllVersions = vers
1233-
catalog.Components[componentName] = lwcomponent.NewCDKComponent(
1234-
component.Name,
1235-
component.Description,
1236-
component.Type,
1237-
component.ApiInfo,
1238-
component.HostInfo)
1233+
component.ApiInfo.AllVersions = vers
1234+
catalog.Components[componentName] = lwcomponent.NewCDKComponent(component.ApiInfo, component.HostInfo)
1235+
}
12391236
}
12401237

12411238
componentsApiInfo = make(map[string]*lwcomponent.ApiInfo, len(catalog.Components))
@@ -1250,3 +1247,53 @@ func LoadCatalog(componentName string, getAllVersions bool) (*lwcomponent.Catalo
12501247

12511248
return catalog, nil
12521249
}
1250+
1251+
type componentJSON struct {
1252+
Name string `json:"name"`
1253+
Description string `json:"description"`
1254+
Version string `json:"version"`
1255+
LatestVersion string `json:"latest_version"`
1256+
ComponentType string `json:"type"`
1257+
Status string `json:"status"`
1258+
}
1259+
1260+
func newComponentJSON(component *lwcomponent.CDKComponent) *componentJSON {
1261+
semver := component.InstalledVersion()
1262+
version := ""
1263+
1264+
if semver != nil {
1265+
version = semver.String()
1266+
}
1267+
1268+
latestVersion := ""
1269+
if component.LatestVersion() != nil {
1270+
latestVersion = component.LatestVersion().String()
1271+
}
1272+
1273+
return &componentJSON{
1274+
Name: component.Name,
1275+
Description: component.Description,
1276+
Version: version,
1277+
LatestVersion: latestVersion,
1278+
ComponentType: string(component.Type),
1279+
Status: component.Status.String(),
1280+
}
1281+
}
1282+
1283+
func CDKComponentsJSON(catalog *lwcomponent.Catalog) error {
1284+
type catalogJSON struct {
1285+
Components []*componentJSON `json:"components"`
1286+
}
1287+
1288+
output := catalogJSON{}
1289+
1290+
for _, component := range catalog.Components {
1291+
output.Components = append(output.Components, newComponentJSON(&component))
1292+
}
1293+
1294+
return cli.OutputJSON(output)
1295+
}
1296+
1297+
func CDKComponentJSON(component *lwcomponent.CDKComponent) error {
1298+
return cli.OutputJSON(newComponentJSON(component))
1299+
}

cli/cmd/component_dev.go

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,11 @@ func runComponentsDevMode(_ *cobra.Command, args []string) error {
8888
}
8989

9090
func devModeComponent(args []string) error {
91-
var componentName string = args[0]
91+
var (
92+
componentName string = args[0]
93+
componentDescription string = ""
94+
componentDir string = ""
95+
)
9296

9397
cli.StartProgress("Loading components Catalog...")
9498

@@ -101,11 +105,9 @@ func devModeComponent(args []string) error {
101105

102106
component, _ := catalog.GetComponent(componentName)
103107
if component == nil {
104-
newComponent := lwcomponent.NewCDKComponent(componentName, "", lwcomponent.EmptyType, nil, nil)
105-
component = &newComponent
106108

107109
cli.OutputHuman("Component '%s' not found. Defining a new component.\n",
108-
color.HiYellowString(component.Name))
110+
color.HiYellowString(componentName))
109111

110112
var (
111113
helpMsg = fmt.Sprintf("What are these component types ?\n"+
@@ -128,28 +130,43 @@ func devModeComponent(args []string) error {
128130
}
129131
}
130132

131-
component.Type = lwcomponent.Type(cdkDevState.Type)
133+
componentType := lwcomponent.Type(cdkDevState.Type)
132134

133135
if cdkDevState.Description == "" {
134136
if err := survey.AskOne(&survey.Input{
135137
Message: "What is this component about? (component description):",
136-
}, &component.Description); err != nil {
138+
}, &componentDescription); err != nil {
137139
return err
138140
}
139141
} else {
140-
component.Description = cdkDevState.Description
142+
componentDescription = cdkDevState.Description
143+
}
144+
145+
dir, err := lwcomponent.CatalogCacheDir()
146+
if err != nil {
147+
return err
141148
}
149+
150+
componentDir = filepath.Join(dir, componentName)
151+
152+
if err := os.MkdirAll(componentDir, os.ModePerm); err != nil {
153+
return err
154+
}
155+
156+
hostInfo, err := lwcomponent.NewHostInfo(componentDir, componentDescription, componentType)
157+
if err != nil {
158+
return err
159+
}
160+
161+
newComponent := lwcomponent.NewCDKComponent(nil, hostInfo)
162+
163+
component = &newComponent
142164
}
143165

144166
if err := component.EnterDevMode(); err != nil {
145167
return errors.Wrap(err, "unable to enter development mode")
146168
}
147169

148-
componentDir, err := component.Dir()
149-
if err != nil {
150-
return errors.New("unable to detect RootPath")
151-
}
152-
153170
cli.OutputHuman("Component '%s' in now in development mode.\n",
154171
color.HiYellowString(component.Name))
155172

lwcomponent/catalog.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ func (c *Catalog) Install(component *CDKComponent) (err error) {
222222
return
223223
}
224224

225-
component.HostInfo, err = CreateHostInfo(componentDir, component.Description, component.Type)
225+
component.HostInfo, err = NewHostInfo(componentDir, component.Description, component.Type)
226226
if err != nil {
227227
return
228228
}
@@ -293,7 +293,7 @@ func NewCatalog(
293293
var allVersions []*semver.Version
294294

295295
apiInfo := NewAPIInfo(c.Id, c.Name, ver, allVersions, c.Description, c.Size, c.Deprecated, Type(c.ComponentType))
296-
cdkComponents[c.Name] = NewCDKComponent(c.Name, c.Description, Type(c.ComponentType), apiInfo, nil)
296+
cdkComponents[c.Name] = NewCDKComponent(apiInfo, nil)
297297
}
298298

299299
components, err := mergeComponents(cdkComponents)
@@ -315,8 +315,8 @@ func NewCachedCatalog(
315315

316316
cachedComponents := make(map[string]CDKComponent, len(cachedComponentsApiInfo))
317317

318-
for _, a := range cachedComponentsApiInfo {
319-
cachedComponents[a.Name] = NewCDKComponent(a.Name, a.Desc, a.ComponentType, a, nil)
318+
for _, apiInfo := range cachedComponentsApiInfo {
319+
cachedComponents[apiInfo.Name] = NewCDKComponent(apiInfo, nil)
320320
}
321321

322322
components, err := mergeComponents(cachedComponents)
@@ -343,7 +343,7 @@ func mergeComponents(components map[string]CDKComponent) (allComponents map[stri
343343
hostInfo = component.HostInfo
344344
delete(localComponents, c.Name)
345345
}
346-
allComponents[c.Name] = NewCDKComponent(c.Name, c.Description, c.Type, c.ApiInfo, hostInfo)
346+
allComponents[c.Name] = NewCDKComponent(c.ApiInfo, hostInfo)
347347
}
348348

349349
for _, c := range localComponents {
@@ -382,33 +382,27 @@ func LoadLocalComponents() (components map[string]CDKComponent, err error) {
382382
continue
383383
}
384384

385-
hostInfo, _ := NewHostInfo(filepath.Join(cacheDir, file.Name()))
385+
hostInfo, _ := LoadHostInfo(filepath.Join(cacheDir, file.Name()))
386386
if hostInfo == nil {
387-
388387
component, found := prototypeComponents[file.Name()]
389388
if !found {
390389
continue
391390
}
392391

393-
hostInfo, err = CreateHostInfo(filepath.Join(cacheDir, file.Name()), component.Description, component.Type)
392+
hostInfo, err = NewHostInfo(filepath.Join(cacheDir, file.Name()), component.Description, component.Type)
394393
if err != nil {
395394
return nil, err
396395
}
397396
}
398397

399398
if hostInfo.Development() {
400-
devInfo, err := newDevInfo(hostInfo.Dir)
399+
_, err := newDevInfo(hostInfo.Dir)
401400
if err != nil {
402401
return nil, err
403402
}
404-
components[hostInfo.Name()] = NewCDKComponent(hostInfo.Name(), devInfo.Desc, devInfo.ComponentType, nil, hostInfo)
403+
components[hostInfo.Name] = NewCDKComponent(nil, hostInfo)
405404
} else {
406-
components[hostInfo.Name()] = NewCDKComponent(
407-
hostInfo.Name(),
408-
hostInfo.Description,
409-
hostInfo.ComponentType,
410-
nil,
411-
hostInfo)
405+
components[hostInfo.Name] = NewCDKComponent(nil, hostInfo)
412406
}
413407
}
414408

0 commit comments

Comments
 (0)