Skip to content

Commit 144c65b

Browse files
authored
feat: CDK .dev file info (#1462)
1 parent 3e2f4ff commit 144c65b

File tree

8 files changed

+133
-67
lines changed

8 files changed

+133
-67
lines changed

Makefile

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -212,16 +212,8 @@ protoc-python: install-tools
212212
--grpc_python_out=./cli/cdk/python proto/v1/*.proto
213213

214214
.PHONY: install-cli
215-
install-cli: build-cli-cross-platform ## Build and install the Lacework CLI binary at /usr/local/bin/lacework
216-
ifeq (x86_64, $(shell uname -m))
217-
mv bin/$(PACKAGENAME)-$(shell uname -s | tr '[:upper:]' '[:lower:]')-amd64 /usr/local/bin/$(CLINAME)
218-
else ifeq (arm64, $(shell uname -m))
219-
mv bin/$(PACKAGENAME)-$(shell uname -s | tr '[:upper:]' '[:lower:]')-arm64 /usr/local/bin/$(CLINAME)
220-
else ifeq (aarch64, $(shell uname -m))
221-
mv bin/$(PACKAGENAME)-$(shell uname -s | tr '[:upper:]' '[:lower:]')-arm64 /usr/local/bin/$(CLINAME)
222-
else
223-
mv bin/$(PACKAGENAME)-$(shell uname -s | tr '[:upper:]' '[:lower:]')-386 /usr/local/bin/$(CLINAME)
224-
endif
215+
install-cli: build ## Build and install the Lacework CLI binary at /usr/local/bin/lacework
216+
mv bin/lacework /usr/local/bin/$(CLINAME)
225217
@echo "\nThe lacework cli has been installed at /usr/local/bin"
226218

227219
.PHONY: release

lwcomponent/api_info.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@ type ApiInfo interface {
1515
}
1616

1717
type apiInfo struct {
18-
id int32
19-
name string
20-
version semver.Version
21-
allVersions []*semver.Version
22-
desc string
23-
sizeKB int64
24-
deprecated bool
18+
id int32
19+
name string
20+
version semver.Version
21+
allVersions []*semver.Version
22+
desc string
23+
sizeKB int64
24+
deprecated bool
25+
componentType Type
2526
}
2627

2728
func NewAPIInfo(
@@ -32,15 +33,17 @@ func NewAPIInfo(
3233
desc string,
3334
size int64,
3435
deprecated bool,
36+
componentType Type,
3537
) ApiInfo {
3638
return &apiInfo{
37-
id: id,
38-
name: name,
39-
version: *version,
40-
allVersions: allVersions,
41-
desc: desc,
42-
sizeKB: size,
43-
deprecated: deprecated,
39+
id: id,
40+
name: name,
41+
version: *version,
42+
allVersions: allVersions,
43+
desc: desc,
44+
sizeKB: size,
45+
deprecated: deprecated,
46+
componentType: componentType,
4447
}
4548
}
4649

lwcomponent/api_info_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func TestApiInfoId(t *testing.T) {
1717

1818
var id int32 = 23
1919

20-
info := lwcomponent.NewAPIInfo(id, "test", version, allVersions, "", 0, false)
20+
info := lwcomponent.NewAPIInfo(id, "test", version, allVersions, "", 0, false, lwcomponent.BinaryType)
2121

2222
result := info.Id()
2323
assert.Equal(t, id, result)
@@ -32,7 +32,7 @@ func TestApiInfoLatestVersion(t *testing.T) {
3232
panic(err)
3333
}
3434

35-
info := lwcomponent.NewAPIInfo(1, "test", version, allVersions, "", 0, false)
35+
info := lwcomponent.NewAPIInfo(1, "test", version, allVersions, "", 0, false, lwcomponent.BinaryType)
3636

3737
result := info.LatestVersion()
3838
assert.Equal(t, expectedVer, result.String())

lwcomponent/catalog.go

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -265,35 +265,57 @@ func NewCatalog(client *api.Client, stageConstructor StageConstructor) (*Catalog
265265
return nil, errors.Wrap(err, fmt.Sprintf("unable to fetch component '%s' versions", c.Name))
266266
}
267267

268-
api := NewAPIInfo(c.Id, c.Name, ver, allVersions, c.Description, c.Size, c.Deprecated)
268+
api := NewAPIInfo(c.Id, c.Name, ver, allVersions, c.Description, c.Size, c.Deprecated, Type(c.ComponentType))
269269

270270
host, found := localComponents[c.Name]
271271
if found {
272272
delete(localComponents, c.Name)
273273
}
274274

275-
component := NewCDKComponent(c.Name, Type(c.ComponentType), api, host)
275+
component := NewCDKComponent(c.Name, c.Description, Type(c.ComponentType), api, host)
276276

277277
cdkComponents[c.Name] = component
278278
}
279279

280280
for _, localHost := range localComponents {
281-
// @jon-stewart: TODO: local specification
282-
cdkComponents[localHost.Name()] = NewCDKComponent(localHost.Name(), BinaryType, nil, localHost)
281+
if localHost.Development() {
282+
devInfo, err := NewDevInfo(localHost.Dir())
283+
if err != nil {
284+
return nil, err
285+
}
286+
287+
cdkComponents[localHost.Name()] = NewCDKComponent(
288+
localHost.Name(),
289+
devInfo.Desc,
290+
devInfo.ComponentType,
291+
nil,
292+
localHost)
293+
} else {
294+
// @jon-stewart: persisted API info
295+
cdkComponents[localHost.Name()] = NewCDKComponent(localHost.Name(), "", BinaryType, nil, localHost)
296+
}
283297
}
284298

285299
return &Catalog{client, cdkComponents, stageConstructor}, nil
286300
}
287301

288302
func LocalComponents() (components []CDKComponent, err error) {
303+
var localHost map[string]HostInfo
289304

290-
localHostInfo, err := loadLocalComponents()
291-
if err != nil {
292-
return
293-
}
305+
localHost, err = loadLocalComponents()
306+
307+
for _, l := range localHost {
308+
if l.Development() {
309+
devInfo, err := NewDevInfo(l.Dir())
310+
if err != nil {
311+
return nil, err
312+
}
294313

295-
for _, l := range localHostInfo {
296-
components = append(components, NewCDKComponent(l.Name(), BinaryType, nil, l))
314+
components = append(components, NewCDKComponent(l.Name(), devInfo.Desc, devInfo.ComponentType, nil, l))
315+
} else {
316+
// @jon-stewart: persisted API info
317+
components = append(components, NewCDKComponent(l.Name(), "", BinaryType, nil, l))
318+
}
297319
}
298320

299321
return

lwcomponent/catalog_test.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,14 @@ func CreateLocalComponent(componentName string, version string, development bool
896896
}
897897

898898
if development {
899-
if _, err := os.Create(filepath.Join(path, lwcomponent.DevelopmentFile)); err != nil {
899+
data, err := json.Marshal(lwcomponent.DevInfo{Name: componentName, Version: version, Desc: "", ComponentType: lwcomponent.BinaryType})
900+
if err != nil {
901+
panic(err)
902+
}
903+
904+
fmt.Println(filepath.Join(path, lwcomponent.DevelopmentFile))
905+
906+
if err := os.WriteFile(filepath.Join(path, lwcomponent.DevelopmentFile), data, os.ModePerm); err != nil {
900907
panic(err)
901908
}
902909
}

lwcomponent/cdk_component.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type CDKComponent struct {
2525
stage Stager
2626
}
2727

28-
func NewCDKComponent(name string, componentType Type, apiInfo ApiInfo, hostInfo HostInfo) CDKComponent {
28+
func NewCDKComponent(name string, desc string, componentType Type, apiInfo ApiInfo, hostInfo HostInfo) CDKComponent {
2929
var (
3030
exec Executer = &nonExecutable{}
3131
)
@@ -48,12 +48,13 @@ func NewCDKComponent(name string, componentType Type, apiInfo ApiInfo, hostInfo
4848
}
4949

5050
return CDKComponent{
51-
Name: name,
52-
Type: componentType,
53-
Status: status,
54-
Exec: exec,
55-
apiInfo: apiInfo,
56-
hostInfo: hostInfo,
51+
Name: name,
52+
Description: desc,
53+
Type: componentType,
54+
Status: status,
55+
Exec: exec,
56+
apiInfo: apiInfo,
57+
hostInfo: hostInfo,
5758
}
5859
}
5960

lwcomponent/cdk_component_test.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ func TestNewCDKComponent(t *testing.T) {
1414
defer ResetHome(home)
1515

1616
t.Run("UnknownStatus", func(t *testing.T) {
17-
component := lwcomponent.NewCDKComponent("unknown", lwcomponent.BinaryType, nil, nil)
17+
component := lwcomponent.NewCDKComponent("unknown", "", lwcomponent.BinaryType, nil, nil)
1818

1919
assert.Equal(t, lwcomponent.UnknownStatus, component.Status)
2020
})
@@ -25,9 +25,9 @@ func TestNewCDKComponent(t *testing.T) {
2525
version, _ := semver.NewVersion("1.1.1")
2626
allVersions := []*semver.Version{version}
2727

28-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
28+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
2929

30-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, nil)
30+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, nil)
3131

3232
assert.Equal(t, lwcomponent.NotInstalled, component.Status)
3333
})
@@ -41,15 +41,15 @@ func TestNewCDKComponent(t *testing.T) {
4141
version, _ := semver.NewVersion(ver)
4242
allVersions := []*semver.Version{version}
4343

44-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
44+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
4545

4646
CreateLocalComponent(name, ver, false)
4747

4848
dir, _ := lwcomponent.CatalogCacheDir()
4949

5050
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
5151

52-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, hostInfo)
52+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, hostInfo)
5353

5454
assert.Equal(t, lwcomponent.Installed, component.Status)
5555
})
@@ -65,15 +65,15 @@ func TestNewCDKComponent(t *testing.T) {
6565
installedVersion, _ := semver.NewVersion(installVer)
6666
allVersions := []*semver.Version{version, installedVersion}
6767

68-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
68+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
6969

7070
CreateLocalComponent(name, installVer, false)
7171

7272
dir, _ := lwcomponent.CatalogCacheDir()
7373

7474
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
7575

76-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, hostInfo)
76+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, hostInfo)
7777

7878
assert.Equal(t, lwcomponent.UpdateAvailable, component.Status)
7979
})
@@ -90,7 +90,7 @@ func TestNewCDKComponent(t *testing.T) {
9090

9191
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
9292

93-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, nil, hostInfo)
93+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, nil, hostInfo)
9494

9595
assert.Equal(t, lwcomponent.InstalledDeprecated, component.Status)
9696
})
@@ -106,12 +106,12 @@ func TestNewCDKComponent(t *testing.T) {
106106

107107
CreateLocalComponent(name, ver, false)
108108

109-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, true)
109+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, true, lwcomponent.BinaryType)
110110

111111
dir, _ := lwcomponent.CatalogCacheDir()
112112
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
113113

114-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, hostInfo)
114+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, hostInfo)
115115

116116
assert.Equal(t, lwcomponent.InstalledDeprecated, component.Status)
117117
})
@@ -124,9 +124,9 @@ func TestNewCDKComponent(t *testing.T) {
124124
version, _ := semver.NewVersion("1.1.1")
125125
allVersions := []*semver.Version{version}
126126

127-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, true)
127+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, true, lwcomponent.BinaryType)
128128

129-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, nil)
129+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, nil)
130130

131131
assert.Equal(t, lwcomponent.NotInstalledDeprecated, component.Status)
132132
})
@@ -141,15 +141,15 @@ func TestNewCDKComponent(t *testing.T) {
141141
version, _ := semver.NewVersion(apiVer)
142142
allVersions := []*semver.Version{version}
143143

144-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
144+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
145145

146146
CreateLocalComponent(name, installVer, false)
147147

148148
dir, _ := lwcomponent.CatalogCacheDir()
149149

150150
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
151151

152-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, hostInfo)
152+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, hostInfo)
153153

154154
assert.Equal(t, lwcomponent.Tainted, component.Status)
155155
})
@@ -166,7 +166,7 @@ func TestNewCDKComponent(t *testing.T) {
166166

167167
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
168168

169-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, nil, hostInfo)
169+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, nil, hostInfo)
170170

171171
assert.Equal(t, lwcomponent.Development, component.Status)
172172
})
@@ -180,15 +180,15 @@ func TestNewCDKComponent(t *testing.T) {
180180
version, _ := semver.NewVersion(ver)
181181
allVersions := []*semver.Version{version}
182182

183-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
183+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
184184

185185
CreateLocalComponent(name, ver, false)
186186

187187
dir, _ := lwcomponent.CatalogCacheDir()
188188

189189
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
190190

191-
component := lwcomponent.NewCDKComponent(name, lwcomponent.BinaryType, apiInfo, hostInfo)
191+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.BinaryType, apiInfo, hostInfo)
192192

193193
_, _, err := component.Exec.Execute([]string{}, "")
194194
assert.Nil(t, err)
@@ -203,15 +203,15 @@ func TestNewCDKComponent(t *testing.T) {
203203
version, _ := semver.NewVersion(ver)
204204
allVersions := []*semver.Version{version}
205205

206-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
206+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
207207

208208
CreateLocalComponent(name, ver, false)
209209

210210
dir, _ := lwcomponent.CatalogCacheDir()
211211

212212
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
213213

214-
component := lwcomponent.NewCDKComponent(name, lwcomponent.CommandType, apiInfo, hostInfo)
214+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.CommandType, apiInfo, hostInfo)
215215

216216
_, _, err := component.Exec.Execute([]string{}, "")
217217
assert.Nil(t, err)
@@ -226,15 +226,15 @@ func TestNewCDKComponent(t *testing.T) {
226226
version, _ := semver.NewVersion(ver)
227227
allVersions := []*semver.Version{version}
228228

229-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
229+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
230230

231231
CreateLocalComponent(name, ver, false)
232232

233233
dir, _ := lwcomponent.CatalogCacheDir()
234234

235235
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
236236

237-
component := lwcomponent.NewCDKComponent(name, lwcomponent.LibraryType, apiInfo, hostInfo)
237+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.LibraryType, apiInfo, hostInfo)
238238

239239
_, _, err := component.Exec.Execute([]string{}, "")
240240
assert.Equal(t, lwcomponent.ErrNonExecutable, err)
@@ -249,15 +249,15 @@ func TestNewCDKComponent(t *testing.T) {
249249
version, _ := semver.NewVersion(ver)
250250
allVersions := []*semver.Version{version}
251251

252-
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false)
252+
apiInfo := lwcomponent.NewAPIInfo(1, name, version, allVersions, "", 1, false, lwcomponent.BinaryType)
253253

254254
CreateLocalComponent(name, ver, false)
255255

256256
dir, _ := lwcomponent.CatalogCacheDir()
257257

258258
hostInfo := lwcomponent.NewHostInfo(filepath.Join(dir, name))
259259

260-
component := lwcomponent.NewCDKComponent(name, lwcomponent.StandaloneType, apiInfo, hostInfo)
260+
component := lwcomponent.NewCDKComponent(name, "", lwcomponent.StandaloneType, apiInfo, hostInfo)
261261

262262
_, _, err := component.Exec.Execute([]string{}, "")
263263
assert.Equal(t, lwcomponent.ErrNonExecutable, err)

0 commit comments

Comments
 (0)