From fb30910affd0601eebcdc17f9ef1bc9dec1b64db Mon Sep 17 00:00:00 2001 From: DJ Schleen Date: Wed, 2 Nov 2022 18:00:14 -0600 Subject: [PATCH 1/3] Adds test for the entire user journey --- .hookz.yaml | 3 ++ README.md | 19 ++++---- cmd/generate.go | 36 +++------------ diagrams/src/class.pu | 28 ++++++++++++ diagrams/src/ditaa.pu | 12 +++++ diagrams/src/example2.pu | 7 --- diagrams/src/{test.pu => sequence.pu} | 2 +- diagrams/src/{example1.pu => simple.pu} | 2 +- lib/gardener.go | 2 +- lib/gardener_test.go | 7 +-- lib/generate.go | 43 ++++++++++++++++++ lib/generate_test.go | 37 +++++++++++++++ sbom/gardener.cyclonedx.json | 60 ++++++++++++------------- 13 files changed, 177 insertions(+), 81 deletions(-) create mode 100644 diagrams/src/class.pu create mode 100644 diagrams/src/ditaa.pu delete mode 100644 diagrams/src/example2.pu rename diagrams/src/{test.pu => sequence.pu} (97%) rename diagrams/src/{example1.pu => simple.pu} (87%) create mode 100644 lib/generate.go create mode 100644 lib/generate_test.go diff --git a/.hookz.yaml b/.hookz.yaml index b081ebc..b1b197b 100644 --- a/.hookz.yaml +++ b/.hookz.yaml @@ -44,6 +44,9 @@ - name: "syft: Generate a Software Bill of Materials (SBoM)" exec: syft args: [".", "-o", "cyclonedx-json=sbom/gardener.cyclonedx.json"] + - name: "gardener: Generate image links for PlantUML diagrams" + exec: ./gardener + args: ["generate", "--deflate", "."] - name: "git: Add all changed files during the pre-commit stage" exec: git args: ["add", "."] \ No newline at end of file diff --git a/README.md b/README.md index df35867..b542270 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A utility that renders PlantUML diagram source in Markdown image tags. [PlantUML](https://plantuml.com/) is a great application that allows users to create "Diagrams as Code". It has a simple syntax, is a fantastic way to render any diagram, and abstracts a lot of the tedious work needed to draw diagrams in an editor. -At [DKFM](https://github.com/devops-kung-fu), when we develop PlantUML documents, we like to have a way for readers to view them without having to download code and generate diagrams. ```gardener``` helps us do this. We can either run the executable manually, or use a pre-commit hook helper like [hooks](https://github.com/devops-kung-fu/hookz) to continuously generate diagrams before code is committed to a central repository. +At [DKFM](https://github.com/devops-kung-fu), when we develop PlantUML documents, we like to have a way for readers to view them in our Markdown without having to download code and generate diagrams themselves. ```gardener``` helps us do this. We can either run the executable manually, or use a pre-commit hook helper like [hooks](https://github.com/devops-kung-fu/hookz) to continuously generate diagrams before code is committed to a central repository. ## Installation @@ -86,7 +86,7 @@ Alice <-- Bob: Another authentication Response Below is the image tag that gardner will update -![diagrams/src/alicenbob.pu]() +![diagrams/src/simple.pu](http://www.plantuml.com/plantuml/png/1C3HQSGm40JGVrKn3QW14uwJ8Gqu5SZAW1RaNPyrWfIVzvwgZzOry6FNFOZllthTWwaCQqH-OOzpGrdgT5chid0S_2nEfJrEvFn26TQueInrkgnLMJWEpZjyCgKoh17vXJtE3SL3dG_gKgVBMfM5u-1dSIgLOOtuoXbxd1kAXpeVrALEbxKg2yV1UOTFfZVzTrqZ_GC00F__0G00__y=) ``` @@ -141,22 +141,25 @@ hooks: - type: pre-commit actions: - name: "Generate Images for PlantUML" - url: https://github.com/devops-kung-fu/gardener/releases/download/v1.0.0/gardener-1.0.0-linux-amd64 - args: ["deflate"] + exec: gardener + args: ["generate", "--deflate", "."] ``` ## Examples Here are some examples from processed from [diagrams/src/example1.pu](diagrams/src/example1.pu) and [diagrams/src/example2.pu](diagrams/src/example2.pu). View the source of this README.md page to see the URL's that ```gardener``` has created. -`diagrams/src/example1.pu` +`diagrams/src/sequence.pu` + +![diagrams/src/sequence.pu](http://www.plantuml.com/plantuml/png/1C3DRXJD3WRWVLs55TQpO8N8OaJ_PAGZHQZ526NzuZPphEvskLskGBZwx_dM4f7zsEakPnTZeLdn21pqyXU7xrBQfkO87FGBl3sYTbkdkjUWJoylB-CybRQfEG87_H-s_WdD5AECBgMqJSqHEAZ9sSLOXeZwPwfx3Pf5_BvzZ7kNqZOrH-2W9cSNOnauQumrLecfxZLe5l7xzZ7kNKhRr1o1WvgSNOpbLN_BgvgCDLQ9gUurwDVUfRHDpH4ugCdPnLXUzRUygia8tXvHkwrJtMlGf-7hFCstqZOrH-2W9cSNOraGgQmEox76AZ7LlGRD8dxVFiQzIscRcYDmK9EpYx4iY5HMX-K8tXvHkwrJtMlGNDU7nBXtAMrJSmGEQd9sCPO5aShgiBnLo-yuXFvtE3XBszGSWOEQd5sCPK6aiZeiRzNohl-4FdyfRLDp10vgSdOnbWMHokgml5NBgUurwDFmTPxcMscRcYDmK9EpYx4Cd3L6yFQ8scsTwbw3S7QKjgav0WSrERiOoy1PurOjfxhNe5d4xzl7k7SfRLDp10vgSdOnbe6pngrQtlMVqESlfMrgZi11JSuknZ9mrhXLo-yuX0Qu_2q5d3NePvCeZaXbTLZIqqsZ9KqxMdiYD5eGgQmEow4u8fNLOKbFT-5gAqqxMdiYD5eGgQmEox4u8fNLOKbFhsX9quxMdWYD5aGggyDoAkLdaw3BbHP4Agl3SdYckRxLs0euzHqfj21IMHsMGoaB8fNLOJdGvKeB8fNLOJa-qnI25FeXPvUM1PpwZXHQ4Aci3iknb0MHokgm7EbofGMHokgmd9vfhcyrjW9EVKSABOXKLeVbL1P4Agl3SgBBvKeB8fNLOJa-qrkDRQucPPMMKJzeGQIoEYodKXP4Agl3SgJBvKeB8fNLOJayqmyvkxIaAGGfQra5dFgE55eGgQmEox6K1P7Awh0Sw7AvqiycyKnpDIchW5FVaK8B8fNLOJcKRs9hF_R_0000__y1003__m==) -![diagrams/src/example1.pu](http://www.plantuml.com/plantuml/png/1C3HZSCW40JGVwgO1cZ0Ebd19RW3u4PY9RARcA7_lDTIVRJVCvLfdSWdhcW7ojQWotgLXUFcTtCfNT6GyuaohVD0sHfqMQ-oSDnSd_35bCgqJkGJLxG3nKE33-hMeCjwbONZvdTpAPLfdVZB6LUq0yL3Wm_grg3BUfM5u-RwX2-c5_r_lsVw0G00__y1003__m==) +`diagrams/src/class.pu` -`diagrams/src/example2.pu` +![diagrams/src/class.pu](http://www.plantuml.com/plantuml/png/1C3DQjj04C3n-pp5_sXZjD072AIqQM-vc1vo4eCqbGNx8NPcxPgGT-_lrKDxZ9BvaTMTdxjkNGjl_xGSsMJ9wiwlrhxnAG0VRR1ePRW9WDlTkcRoNiq582K1KEVP1W-j8G1QLxRUnY40Boy24BUzRawqpU9cFGd0F0l0HniiMhdftL2dQ7sozJOE5m1rdctmq1e2C4q2y5PNsb-MhExo9R9aTUUFM-TJ05BYkfSZ6xyjmZef2S25pU9TYvtE0d1Xi_Y-hjtSJsS1I8bhAuPRX7LI4e0BRl6knKvd0PXdZhxVDOnLGvbd0TXhe9i9m3HXTUdF8snbcWJW6dsl6uUwFrfVvKjUhQwZvFy0003__m400F__) -![diagrams/src/example2.pu](http://www.plantuml.com/plantuml/png/1C3HZSCW40JGVwgO1cZ0Ebd19RW3u4PY9RARcA7_lDTIVRJVCvLfdSWdhcW7ojQWotgLXUFcTtCfNT6GyuaohVD0sHfqMQ-oSDnSd_35bCgqJkGJLxG3nKE33-hMeCjwbONZvdTpAPLfdVZB6LUq0yL3Wm_grg3BUfM5u-RwX2-c5_r_lsVw0G00__y1003__m==) +`diagrams/src/ditta.pu` +![diagrams/src/ditaa.pu](http://www.plantuml.com/plantuml/png/1C0nIbnR083X_gpYipxy6tZ5Gy4KWPJMWOipaI5U9-WT8kHax_dkFuxj_RZjhnw_FZqy-FAvxRzUp-DqERPjpAggYLbLJPXLrHmBO5RJwN9icrd_Mu0r5a_dpuE5MLLDMAVBzlA-xMkin-lpRJ-_7GlhRjzUBizt2nPWZGN-dFukBC221LXZLhDgObPL4sPLDGVy1m00uFk01VXsFJvSV_XzVVy9h06pggggggggEUxFRwVR_leF003__m400F__) ## Software Bill of Materials diff --git a/cmd/generate.go b/cmd/generate.go index 41f6377..75ce362 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -8,7 +8,7 @@ import ( "github.com/gookit/color" "github.com/spf13/cobra" - src "github.com/devops-kung-fu/gardener/lib" + "github.com/devops-kung-fu/gardener/lib" ) var ( @@ -37,45 +37,21 @@ func init() { } func generate(path string) { - diagramFiles, e := src.FindFiles(Afs, path, ".*\\.(pu|puml|plantuml|iuml|wsd)") + diagramFiles, e := lib.FindFiles(Afs, path, ".*\\.(pu|puml|plantuml|iuml|wsd)") if e != nil { log.Fatal(e) } util.DoIf(Verbose, func() { color.Style{color.FgLightBlue, color.OpBold}.Print("Generating Links...\n\n") util.PrintInfo(fmt.Sprintf("Found %x diagrams", len(diagramFiles))) + for _, file := range diagramFiles { + util.PrintTabbed(file) + } util.PrintInfo("Processing Markdown files") }) - markdownFiles, e := src.FindFiles(Afs, path, ".*\\.md") - if e != nil { - log.Fatal(e) - } - for _, markdownFile := range markdownFiles { - util.DoIf(Verbose, func() { - log.Print("Working on ", markdownFile) - util.PrintTabbed(markdownFile) - }) + _, _ = lib.Generate(Afs, diagramFiles, path, Verbose, deflate) - for _, diagramFile := range diagramFiles { - diagramContent, err := src.ReadFileContentBytes(Afs, diagramFile) - if util.IsErrorBool(err) { - log.Fatal(err) - } - var url string - if deflate { - log.Print("Deflate Encoding Diagram for: ", diagramFile) - url = src.DeflateEncodedURL(diagramContent) - } else { - log.Print("Hex Encoding Diagram for: ", diagramFile) - url = src.HexEncodedURL(diagramContent) - } - - searchImageStub := fmt.Sprintf("\\!\\[%s\\]\\(.*\\)", diagramFile) - replaceImageStub := fmt.Sprintf("![%s](%s)", diagramFile, url) - _, _ = src.ReplaceLineInFile(Afs, markdownFile, searchImageStub, replaceImageStub) - } - } util.DoIf(Verbose, func() { util.PrintSuccess("Done!\n") }) diff --git a/diagrams/src/class.pu b/diagrams/src/class.pu new file mode 100644 index 0000000..84d2b77 --- /dev/null +++ b/diagrams/src/class.pu @@ -0,0 +1,28 @@ +@startuml Class Diagram Example +class Foo1 { + You can use + several lines + .. + as you want + and group + == + things together. + __ + You can have as many groups + as you want + -- + End of class +} + +class User { + .. Simple Getter .. + + getName() + + getAddress() + .. Some setter .. + + setName() + __ private data __ + int age + -- encrypted -- + String password +} +@enduml \ No newline at end of file diff --git a/diagrams/src/ditaa.pu b/diagrams/src/ditaa.pu new file mode 100644 index 0000000..2856557 --- /dev/null +++ b/diagrams/src/ditaa.pu @@ -0,0 +1,12 @@ +@startuml DITAA Example +ditaa ++--------+ +-------+ +-------+ +| +---+ ditaa +--> | | +| Text | +-------+ |diagram| +|Document| |!magic!| | | +| {d}| | | | | ++---+----+ +-------+ +-------+ + : ^ + | Lots of work | + +-------------------------+ +@enduml \ No newline at end of file diff --git a/diagrams/src/example2.pu b/diagrams/src/example2.pu deleted file mode 100644 index 362b17f..0000000 --- a/diagrams/src/example2.pu +++ /dev/null @@ -1,7 +0,0 @@ -@startuml -Alice -> Bob: Authentication Request -Bob --> Alice: Authentication Response - -Alice -> Bob: Another authentication Request -Alice <-- Bob: Another authentication Response -@enduml diff --git a/diagrams/src/test.pu b/diagrams/src/sequence.pu similarity index 97% rename from diagrams/src/test.pu rename to diagrams/src/sequence.pu index 5efb58d..86b1be1 100644 --- a/diagrams/src/test.pu +++ b/diagrams/src/sequence.pu @@ -1,4 +1,4 @@ -@startuml +@startuml Sequence Diagram Example skinparam backgroundColor #EEEBDC skinparam handwritten true diff --git a/diagrams/src/example1.pu b/diagrams/src/simple.pu similarity index 87% rename from diagrams/src/example1.pu rename to diagrams/src/simple.pu index 362b17f..5dc3f79 100644 --- a/diagrams/src/example1.pu +++ b/diagrams/src/simple.pu @@ -1,4 +1,4 @@ -@startuml +@startuml Simple Example Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response diff --git a/lib/gardener.go b/lib/gardener.go index 10e6418..21c53aa 100644 --- a/lib/gardener.go +++ b/lib/gardener.go @@ -1,4 +1,4 @@ -package src +package lib import ( "bytes" diff --git a/lib/gardener_test.go b/lib/gardener_test.go index 37d3c64..4d9e025 100644 --- a/lib/gardener_test.go +++ b/lib/gardener_test.go @@ -1,4 +1,4 @@ -package src +package lib import ( "testing" @@ -61,8 +61,9 @@ func TestHexEncodedURL(t *testing.T) { func TestReplaceLineInFile(t *testing.T) { afs := &afero.Afero{Fs: afero.NewMemMapFs()} - afs.WriteFile("README.md", []byte("\\!\\[example.pu\\]\\(.*\\)"), 0644) - result, err := ReplaceLineInFile(afs, "README.md", "\\!\\[example.pu\\]\\(.*\\)", "![example.pu](https://example.com)") + + afs.WriteFile("README.md", []byte("![example.pu]()"), 0644) + result, err := ReplaceLineInFile(afs, "README.md", "![example.pu]()", "![example.pu](https://example.com)") assert.True(t, result) assert.NoError(t, err) diff --git a/lib/generate.go b/lib/generate.go new file mode 100644 index 0000000..226e82b --- /dev/null +++ b/lib/generate.go @@ -0,0 +1,43 @@ +package lib + +import ( + "fmt" + "log" + + "github.com/devops-kung-fu/common/util" + "github.com/spf13/afero" +) + +func Generate(afs *afero.Afero, diagramFiles []string, path string, verbose bool, deflate bool) (markdownFiles []string, err error) { + markdownFiles, err = FindFiles(afs, path, ".*\\.md") + if err != nil { + log.Fatal(err) + } + for _, markdownFile := range markdownFiles { + util.DoIf(verbose, func() { + log.Print("Working on ", markdownFile) + util.PrintTabbed(markdownFile) + }) + + for _, diagramFile := range diagramFiles { + diagramContent, err := ReadFileContentBytes(afs, diagramFile) + if util.IsErrorBool(err) { + log.Fatal(err) + } + var url string + if deflate { + + log.Print("Deflate Encoding Diagram for: ", diagramFile) + url = DeflateEncodedURL(diagramContent) + } else { + log.Print("Hex Encoding Diagram for: ", diagramFile) + url = HexEncodedURL(diagramContent) + } + + searchImageStub := fmt.Sprintf("\\!\\[%s\\]\\(.*\\)", diagramFile) + replaceImageStub := fmt.Sprintf("![%s](%s)", diagramFile, url) + _, _ = ReplaceLineInFile(afs, markdownFile, searchImageStub, replaceImageStub) + } + } + return +} diff --git a/lib/generate_test.go b/lib/generate_test.go new file mode 100644 index 0000000..b8aca57 --- /dev/null +++ b/lib/generate_test.go @@ -0,0 +1,37 @@ +package lib + +import ( + "testing" + + "github.com/spf13/afero" + "github.com/stretchr/testify/assert" +) + +func TestGenerate(t *testing.T) { + afs := &afero.Afero{Fs: afero.NewMemMapFs()} + afs.WriteFile("example.pu", samplePlantUMLFile(), 0644) + afs.WriteFile("README.md", []byte("![example.pu]()"), 0644) + + diagramFiles, err := FindFiles(afs, ".", ".*\\.(pu|puml|plantuml|iuml|wsd)") + + assert.NoError(t, err) + result, err := Generate(afs, diagramFiles, ".", true, true) + + assert.NoError(t, err) + assert.NotNil(t, result) + file, _ := afs.ReadFile("README.md") + assert.Equal(t, file, []byte("![example.pu](http://www.plantuml.com/plantuml/png/1C3XQSGm30NWt_8KRm4l4Cfn3dI1T0B7VM218-LY6Jf-loJodb6VMDV0Zrxt8Bx_wdKF9f4oj17vXTtF3ML5fuMs6kg6Wv_56KbaznCvlr26DcueApejjDLGDnoSjzjaIY9bQ2Fo2xkV6ufvT3weApejjDLGDnpyBCv88cLe8xvonkxdXc8UdG_gYauBRJNK3GVdxJQPHDwqttMD9Fy0003__m400F__)")) +} + +func samplePlantUMLFile() []byte { + test := ` + @startuml Simple Example + Alice -> Bob: Authentication Request + Bob --> Alice: Authentication Response + + Alice -> Bob: Another authentication Request + Alice <-- Bob: Another authentication Response + @enduml + ` + return []byte(test) +} diff --git a/sbom/gardener.cyclonedx.json b/sbom/gardener.cyclonedx.json index cdd2527..b98db68 100644 --- a/sbom/gardener.cyclonedx.json +++ b/sbom/gardener.cyclonedx.json @@ -1,10 +1,10 @@ { "bomFormat": "CycloneDX", "specVersion": "1.4", - "serialNumber": "urn:uuid:a66deb4b-ecbe-4bca-8301-dd58c3969e3f", + "serialNumber": "urn:uuid:6528d788-d9c4-4205-86c8-4cf1bb932dfd", "version": 1, "metadata": { - "timestamp": "2022-10-24T20:36:38-06:00", + "timestamp": "2022-11-02T18:00:18-06:00", "tools": [ { "vendor": "anchore", @@ -20,7 +20,7 @@ }, "components": [ { - "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1?package-id=82cf8b15f7c32de3", + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1?package-id=1fb9b67c3d9e3679", "type": "library", "name": "github.com/davecgh/go-spew", "version": "v1.1.1", @@ -50,7 +50,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=28c16f739f670306", + "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=2f486401e0e4e045", "type": "library", "name": "github.com/devops-kung-fu/common", "version": "v0.2.5", @@ -112,7 +112,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=f95acdc3523b68eb", + "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=e7de7e4d0c84975d", "type": "library", "name": "github.com/devops-kung-fu/common", "version": "v0.2.5", @@ -154,12 +154,12 @@ ] }, { - "bom-ref": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221025023337-966476e70854?package-id=e4503ae281a8edbc", + "bom-ref": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221025023739-59c29eb675c5?package-id=a6cc2d9cc3a3c714", "type": "library", "name": "github.com/devops-kung-fu/gardener", - "version": "v0.0.0-20221025023337-966476e70854", - "cpe": "cpe:2.3:a:devops-kung-fu:gardener:v0.0.0-20221025023337-966476e70854:*:*:*:*:*:*:*", - "purl": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221025023337-966476e70854", + "version": "v0.0.0-20221025023739-59c29eb675c5", + "cpe": "cpe:2.3:a:devops-kung-fu:gardener:v0.0.0-20221025023739-59c29eb675c5:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221025023739-59c29eb675c5", "properties": [ { "name": "syft:package:foundBy", @@ -179,19 +179,19 @@ }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops_kung_fu:gardener:v0.0.0-20221025023337-966476e70854:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops_kung_fu:gardener:v0.0.0-20221025023739-59c29eb675c5:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops-kung:gardener:v0.0.0-20221025023337-966476e70854:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops-kung:gardener:v0.0.0-20221025023739-59c29eb675c5:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops_kung:gardener:v0.0.0-20221025023337-966476e70854:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops_kung:gardener:v0.0.0-20221025023739-59c29eb675c5:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops:gardener:v0.0.0-20221025023337-966476e70854:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops:gardener:v0.0.0-20221025023739-59c29eb675c5:*:*:*:*:*:*:*" }, { "name": "syft:location:0:path", @@ -212,7 +212,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=39dc11f7f368ac7b", + "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=fada7d96c6521d0", "type": "library", "name": "github.com/gookit/color", "version": "v1.5.2", @@ -258,7 +258,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=44050d118a02707c", + "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=6a2e70e59e329398", "type": "library", "name": "github.com/gookit/color", "version": "v1.5.2", @@ -284,7 +284,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.1?package-id=85cf4669a7b55c3", + "bom-ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.1?package-id=702fa79227260255", "type": "library", "name": "github.com/inconshreveable/mousetrap", "version": "v1.0.1", @@ -310,7 +310,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0?package-id=fc0265ef2c7b8e50", + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0?package-id=833a8c266dcd1603", "type": "library", "name": "github.com/pmezard/go-difflib", "version": "v1.0.0", @@ -340,7 +340,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=3afd2c9c9926cc57", + "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=158264b26ee808c6", "type": "library", "name": "github.com/spf13/afero", "version": "v1.9.2", @@ -386,7 +386,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=1ab8d71708e8ef0a", + "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=fb18fc6f606960a3", "type": "library", "name": "github.com/spf13/afero", "version": "v1.9.2", @@ -412,7 +412,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=ceafb7d03b5098b7", + "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=75c060ffa270cd4", "type": "library", "name": "github.com/spf13/cobra", "version": "v1.6.1", @@ -458,7 +458,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=86964f5f4c273c89", + "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=a8f99da43eadb58", "type": "library", "name": "github.com/spf13/cobra", "version": "v1.6.1", @@ -484,7 +484,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=a8aad8bded37a6c5", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=9ff8bcdfbf3c7a0f", "type": "library", "name": "github.com/spf13/pflag", "version": "v1.0.5", @@ -530,7 +530,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=b5f60d334205548", + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=bdcb9466894c83ef", "type": "library", "name": "github.com/spf13/pflag", "version": "v1.0.5", @@ -556,7 +556,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.0?package-id=384b2b91069c12ca", + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.0?package-id=d6a3bbf2357206af", "type": "library", "name": "github.com/stretchr/testify", "version": "v1.8.0", @@ -582,7 +582,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=fc6a8925c7d31029", + "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=770daaa5875f80a9", "type": "library", "name": "github.com/xo/terminfo", "version": "v0.0.0-20220910002029-abceb7e1c41e", @@ -628,7 +628,7 @@ ] }, { - "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=b516433ce4c71aa5", + "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=d1f9db4bb9f9d9d8", "type": "library", "name": "github.com/xo/terminfo", "version": "v0.0.0-20220910002029-abceb7e1c41e", @@ -654,7 +654,7 @@ ] }, { - "bom-ref": "pkg:golang/golang.org/x/sys@v0.1.0?package-id=f0dbacc78b47bc77", + "bom-ref": "pkg:golang/golang.org/x/sys@v0.1.0?package-id=88d3a86bc4c51da9", "type": "library", "name": "golang.org/x/sys", "version": "v0.1.0", @@ -680,7 +680,7 @@ ] }, { - "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=bbd92e31437d37fa", + "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=9a96c2e93c4fc8f", "type": "library", "name": "golang.org/x/text", "version": "v0.4.0", @@ -726,7 +726,7 @@ ] }, { - "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=4ce8c6d02da0599a", + "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=f4c6aa8854f5aabf", "type": "library", "name": "golang.org/x/text", "version": "v0.4.0", @@ -752,7 +752,7 @@ ] }, { - "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=7d36a1c0c358a2f8", + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1a28581cf57f9a6f", "type": "library", "name": "gopkg.in/yaml.v3", "version": "v3.0.1", From 844a86b141f117dd955de8f93a00073f6e654bc0 Mon Sep 17 00:00:00 2001 From: DJ Schleen Date: Wed, 2 Nov 2022 18:01:47 -0600 Subject: [PATCH 2/3] Updates .hookz.yaml to not have the syft executable wacky goin' on --- .hookz.yaml | 6 +- sbom/hookz.cyclonedx.json | 780 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 784 insertions(+), 2 deletions(-) create mode 100644 sbom/hookz.cyclonedx.json diff --git a/.hookz.yaml b/.hookz.yaml index b1b197b..264823d 100644 --- a/.hookz.yaml +++ b/.hookz.yaml @@ -42,8 +42,10 @@ exec: go args: ["tool", "cover", "-func=coverage.out"] - name: "syft: Generate a Software Bill of Materials (SBoM)" - exec: syft - args: [".", "-o", "cyclonedx-json=sbom/gardener.cyclonedx.json"] + script: " + #!/bin/bash \n + syft . -o cyclonedx-json=sbom/hookz.cyclonedx.json &> /dev/null \n + " - name: "gardener: Generate image links for PlantUML diagrams" exec: ./gardener args: ["generate", "--deflate", "."] diff --git a/sbom/hookz.cyclonedx.json b/sbom/hookz.cyclonedx.json new file mode 100644 index 0000000..47b8ab3 --- /dev/null +++ b/sbom/hookz.cyclonedx.json @@ -0,0 +1,780 @@ +{ + "bomFormat": "CycloneDX", + "specVersion": "1.4", + "serialNumber": "urn:uuid:2a06ea51-2acd-46fb-a409-2a1436ec0bf1", + "version": 1, + "metadata": { + "timestamp": "2022-11-02T18:01:51-06:00", + "tools": [ + { + "vendor": "anchore", + "name": "syft", + "version": "[not provided]" + } + ], + "component": { + "bom-ref": "af63bd4c8601b7f1", + "type": "file", + "name": "." + } + }, + "components": [ + { + "bom-ref": "pkg:golang/github.com/davecgh/go-spew@v1.1.1?package-id=1fb9b67c3d9e3679", + "type": "library", + "name": "github.com/davecgh/go-spew", + "version": "v1.1.1", + "cpe": "cpe:2.3:a:davecgh:go-spew:v1.1.1:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/davecgh/go-spew@v1.1.1", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:davecgh:go_spew:v1.1.1:*:*:*:*:*:*:*" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=2f486401e0e4e045", + "type": "library", + "name": "github.com/devops-kung-fu/common", + "version": "v0.2.5", + "cpe": "cpe:2.3:a:devops-kung-fu:common:v0.2.5:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung_fu:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops-kung:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:Ktyp1vsE2iyQPbazSxkQ1CiUq29FblQk/fYPHa09AzA=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5?package-id=e7de7e4d0c84975d", + "type": "library", + "name": "github.com/devops-kung-fu/common", + "version": "v0.2.5", + "cpe": "cpe:2.3:a:devops-kung-fu:common:v0.2.5:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/devops-kung-fu/common@v0.2.5", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung_fu:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops-kung:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops:common:v0.2.5:*:*:*:*:*:*:*" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000014-fb30910affd0?package-id=767647efec9d8c0d", + "type": "library", + "name": "github.com/devops-kung-fu/gardener", + "version": "v0.0.0-20221103000014-fb30910affd0", + "cpe": "cpe:2.3:a:devops-kung-fu:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000014-fb30910affd0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung_fu:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops-kung:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops_kung:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:devops:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=fada7d96c6521d0", + "type": "library", + "name": "github.com/gookit/color", + "version": "v1.5.2", + "cpe": "cpe:2.3:a:gookit:color:v1.5.2:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/gookit/color@v1.5.2", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/gookit/color@v1.5.2?package-id=6a2e70e59e329398", + "type": "library", + "name": "github.com/gookit/color", + "version": "v1.5.2", + "cpe": "cpe:2.3:a:gookit:color:v1.5.2:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/gookit/color@v1.5.2", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.1?package-id=702fa79227260255", + "type": "library", + "name": "github.com/inconshreveable/mousetrap", + "version": "v1.0.1", + "cpe": "cpe:2.3:a:inconshreveable:mousetrap:v1.0.1:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/inconshreveable/mousetrap@v1.0.1", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0?package-id=833a8c266dcd1603", + "type": "library", + "name": "github.com/pmezard/go-difflib", + "version": "v1.0.0", + "cpe": "cpe:2.3:a:pmezard:go-difflib:v1.0.0:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/pmezard/go-difflib@v1.0.0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:cpe23", + "value": "cpe:2.3:a:pmezard:go_difflib:v1.0.0:*:*:*:*:*:*:*" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=158264b26ee808c6", + "type": "library", + "name": "github.com/spf13/afero", + "version": "v1.9.2", + "cpe": "cpe:2.3:a:spf13:afero:v1.9.2:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/afero@v1.9.2", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/afero@v1.9.2?package-id=fb18fc6f606960a3", + "type": "library", + "name": "github.com/spf13/afero", + "version": "v1.9.2", + "cpe": "cpe:2.3:a:spf13:afero:v1.9.2:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/afero@v1.9.2", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=75c060ffa270cd4", + "type": "library", + "name": "github.com/spf13/cobra", + "version": "v1.6.1", + "cpe": "cpe:2.3:a:spf13:cobra:v1.6.1:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/cobra@v1.6.1", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/cobra@v1.6.1?package-id=a8f99da43eadb58", + "type": "library", + "name": "github.com/spf13/cobra", + "version": "v1.6.1", + "cpe": "cpe:2.3:a:spf13:cobra:v1.6.1:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/cobra@v1.6.1", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=9ff8bcdfbf3c7a0f", + "type": "library", + "name": "github.com/spf13/pflag", + "version": "v1.0.5", + "cpe": "cpe:2.3:a:spf13:pflag:v1.0.5:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/spf13/pflag@v1.0.5?package-id=bdcb9466894c83ef", + "type": "library", + "name": "github.com/spf13/pflag", + "version": "v1.0.5", + "cpe": "cpe:2.3:a:spf13:pflag:v1.0.5:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/spf13/pflag@v1.0.5", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/stretchr/testify@v1.8.0?package-id=d6a3bbf2357206af", + "type": "library", + "name": "github.com/stretchr/testify", + "version": "v1.8.0", + "cpe": "cpe:2.3:a:stretchr:testify:v1.8.0:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/stretchr/testify@v1.8.0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=770daaa5875f80a9", + "type": "library", + "name": "github.com/xo/terminfo", + "version": "v0.0.0-20220910002029-abceb7e1c41e", + "cpe": "cpe:2.3:a:xo:terminfo:v0.0.0-20220910002029-abceb7e1c41e:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e?package-id=d1f9db4bb9f9d9d8", + "type": "library", + "name": "github.com/xo/terminfo", + "version": "v0.0.0-20220910002029-abceb7e1c41e", + "cpe": "cpe:2.3:a:xo:terminfo:v0.0.0-20220910002029-abceb7e1c41e:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/xo/terminfo@v0.0.0-20220910002029-abceb7e1c41e", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/golang.org/x/sys@v0.1.0?package-id=88d3a86bc4c51da9", + "type": "library", + "name": "golang.org/x/sys", + "version": "v0.1.0", + "cpe": "cpe:2.3:a:golang:x\\/sys:v0.1.0:*:*:*:*:*:*:*", + "purl": "pkg:golang/golang.org/x/sys@v0.1.0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=9a96c2e93c4fc8f", + "type": "library", + "name": "golang.org/x/text", + "version": "v0.4.0", + "cpe": "cpe:2.3:a:golang:x\\/text:v0.4.0:*:*:*:*:*:*:*", + "purl": "pkg:golang/golang.org/x/text@v0.4.0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-module-binary-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:metadataType", + "value": "GolangBinMetadata" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "gardener" + }, + { + "name": "syft:metadata:architecture", + "value": "amd64" + }, + { + "name": "syft:metadata:goCompiledVersion", + "value": "go1.19.2" + }, + { + "name": "syft:metadata:h1Digest", + "value": "h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=" + }, + { + "name": "syft:metadata:mainModule", + "value": "github.com/devops-kung-fu/gardener" + } + ] + }, + { + "bom-ref": "pkg:golang/golang.org/x/text@v0.4.0?package-id=f4c6aa8854f5aabf", + "type": "library", + "name": "golang.org/x/text", + "version": "v0.4.0", + "cpe": "cpe:2.3:a:golang:x\\/text:v0.4.0:*:*:*:*:*:*:*", + "purl": "pkg:golang/golang.org/x/text@v0.4.0", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + }, + { + "bom-ref": "pkg:golang/gopkg.in/yaml.v3@v3.0.1?package-id=1a28581cf57f9a6f", + "type": "library", + "name": "gopkg.in/yaml.v3", + "version": "v3.0.1", + "purl": "pkg:golang/gopkg.in/yaml.v3@v3.0.1", + "properties": [ + { + "name": "syft:package:foundBy", + "value": "go-mod-file-cataloger" + }, + { + "name": "syft:package:language", + "value": "go" + }, + { + "name": "syft:package:type", + "value": "go-module" + }, + { + "name": "syft:location:0:path", + "value": "go.mod" + } + ] + } + ] +} From 375d353410adbdeda20f3a7b8689ea5b831de8bf Mon Sep 17 00:00:00 2001 From: DJ Schleen Date: Wed, 2 Nov 2022 18:06:43 -0600 Subject: [PATCH 3/3] Fixes README.md documentation about alice and bob --- README.md | 13 +++++++++++-- sbom/hookz.cyclonedx.json | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index b542270..e42ea82 100644 --- a/README.md +++ b/README.md @@ -84,11 +84,20 @@ Alice <-- Bob: Another authentication Response ``` markdown # My Markdown File -Below is the image tag that gardner will update +Below is the image tag that gardener will update -![diagrams/src/simple.pu](http://www.plantuml.com/plantuml/png/1C3HQSGm40JGVrKn3QW14uwJ8Gqu5SZAW1RaNPyrWfIVzvwgZzOry6FNFOZllthTWwaCQqH-OOzpGrdgT5chid0S_2nEfJrEvFn26TQueInrkgnLMJWEpZjyCgKoh17vXJtE3SL3dG_gKgVBMfM5u-1dSIgLOOtuoXbxd1kAXpeVrALEbxKg2yV1UOTFfZVzTrqZ_GC00F__0G00__y=) +![diagrams/src/aliceandbob.pu]() + +``` + +Gardener will change that link to: ``` +![diagrams/src/aliceandbob.pu](http://www.plantuml.com/plantuml/png/1C3HQSGm40JGVrKn3QW14uwJ8Gqu5SZAW1RaNPyrWfIVzvwgZzOry6FNFOZllthTWwaCQqH-OOzpGrdgT5chid0S_2nEfJrEvFn26TQueInrkgnLMJWEpZjyCgKoh17vXJtE3SL3dG_gKgVBMfM5u-1dSIgLOOtuoXbxd1kAXpeVrALEbxKg2yV1UOTFfZVzTrqZ_GC00F__0G00__y=) +``` +Which will render like this: + +![diagrams/src/simple.pu](http://www.plantuml.com/plantuml/png/1C3HQSGm40JGVrKn3QW14uwJ8Gqu5SZAW1RaNPyrWfIVzvwgZzOry6FNFOZllthTWwaCQqH-OOzpGrdgT5chid0S_2nEfJrEvFn26TQueInrkgnLMJWEpZjyCgKoh17vXJtE3SL3dG_gKgVBMfM5u-1dSIgLOOtuoXbxd1kAXpeVrALEbxKg2yV1UOTFfZVzTrqZ_GC00F__0G00__y=) ## Usage diff --git a/sbom/hookz.cyclonedx.json b/sbom/hookz.cyclonedx.json index 47b8ab3..3c6ea7d 100644 --- a/sbom/hookz.cyclonedx.json +++ b/sbom/hookz.cyclonedx.json @@ -1,10 +1,10 @@ { "bomFormat": "CycloneDX", "specVersion": "1.4", - "serialNumber": "urn:uuid:2a06ea51-2acd-46fb-a409-2a1436ec0bf1", + "serialNumber": "urn:uuid:97d5dc77-669d-4429-8620-667da62a9e06", "version": 1, "metadata": { - "timestamp": "2022-11-02T18:01:51-06:00", + "timestamp": "2022-11-02T18:06:47-06:00", "tools": [ { "vendor": "anchore", @@ -154,12 +154,12 @@ ] }, { - "bom-ref": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000014-fb30910affd0?package-id=767647efec9d8c0d", + "bom-ref": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000147-844a86b141f1?package-id=820a7bb6d2c3a39e", "type": "library", "name": "github.com/devops-kung-fu/gardener", - "version": "v0.0.0-20221103000014-fb30910affd0", - "cpe": "cpe:2.3:a:devops-kung-fu:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*", - "purl": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000014-fb30910affd0", + "version": "v0.0.0-20221103000147-844a86b141f1", + "cpe": "cpe:2.3:a:devops-kung-fu:gardener:v0.0.0-20221103000147-844a86b141f1:*:*:*:*:*:*:*", + "purl": "pkg:golang/github.com/devops-kung-fu/gardener@v0.0.0-20221103000147-844a86b141f1", "properties": [ { "name": "syft:package:foundBy", @@ -179,19 +179,19 @@ }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops_kung_fu:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops_kung_fu:gardener:v0.0.0-20221103000147-844a86b141f1:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops-kung:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops-kung:gardener:v0.0.0-20221103000147-844a86b141f1:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops_kung:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops_kung:gardener:v0.0.0-20221103000147-844a86b141f1:*:*:*:*:*:*:*" }, { "name": "syft:cpe23", - "value": "cpe:2.3:a:devops:gardener:v0.0.0-20221103000014-fb30910affd0:*:*:*:*:*:*:*" + "value": "cpe:2.3:a:devops:gardener:v0.0.0-20221103000147-844a86b141f1:*:*:*:*:*:*:*" }, { "name": "syft:location:0:path",