Skip to content

Commit

Permalink
🐛 Post analysis using manifest.
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Ortel <jortel@redhat.com>
  • Loading branch information
jortel committed Sep 26, 2024
1 parent 953224b commit 007927e
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 47 deletions.
23 changes: 5 additions & 18 deletions builder/deps.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,15 @@ type Deps struct {
Path string
}

// Reader returns a reader.
func (b *Deps) Reader() (r io.Reader) {
r, w := io.Pipe()
go func() {
var err error
defer func() {
if err != nil {
_ = w.CloseWithError(err)
} else {
_ = w.Close()
}
}()
err = b.Write(w)
}()
return
}

// Write deps to the writer.
// Write deps section.
func (b *Deps) Write(writer io.Writer) (err error) {
input, err := b.read()
if err != nil {
return
}
encoder := yaml.NewEncoder(writer)
_, _ = writer.Write([]byte(api.BeginDepsMarker))
_, _ = writer.Write([]byte{'\n'})
for _, p := range input {
for _, d := range p.Dependencies {
err = encoder.Encode(
Expand All @@ -54,6 +39,8 @@ func (b *Deps) Write(writer io.Writer) (err error) {
}
}
}
_, _ = writer.Write([]byte(api.EndDepsMarker))
_, _ = writer.Write([]byte{'\n'})
return
}

Expand Down
28 changes: 9 additions & 19 deletions builder/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,30 +31,18 @@ func (b *Issues) RuleError() (r *RuleError) {
return &b.ruleErr
}

// Reader returns a reader.
func (b *Issues) Reader() (r io.Reader) {
r, w := io.Pipe()
go func() {
var err error
defer func() {
if err != nil {
_ = w.CloseWithError(err)
} else {
_ = w.Close()
}
}()
err = b.Write(w)
}()
return
}

// Write issues to the writer.
// Write issues section.
func (b *Issues) Write(writer io.Writer) (err error) {
input, err := b.read()
if err != nil {
return
}
encoder := yaml.NewEncoder(writer)
_, _ = writer.Write([]byte(api.BeginIssuesMarker))
_, _ = writer.Write([]byte{'\n'})
if err != nil {
return
}
for _, ruleset := range input {
b.ruleErr.Append(ruleset)
for ruleid, v := range ruleset.Violations {
Expand Down Expand Up @@ -98,6 +86,8 @@ func (b *Issues) Write(writer io.Writer) (err error) {
}
}
}
_, _ = writer.Write([]byte(api.EndIssuesMarker))
_, _ = writer.Write([]byte{'\n'})
return
}

Expand Down Expand Up @@ -139,7 +129,7 @@ func (b *Issues) Tags() (tags []string) {
}

// Facts builds facts.
func (b *Issues) Facts() (facts api.FactMap) {
func (b *Issues) Facts() (facts api.Map) {
return
}

Expand Down
46 changes: 46 additions & 0 deletions builder/manifest.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package builder

import (
"os"

"github.com/konveyor/tackle2-hub/api"
"gopkg.in/yaml.v2"
)

// Manifest file.
type Manifest struct {
Analysis api.Analysis
Issues *Issues
Deps *Deps
Path string
}

// Write manifest file.
func (m *Manifest) Write() (err error) {
m.Path = "manifest.yaml"
file, err := os.Create(m.Path)
if err != nil {
return
}
defer func() {
_ = file.Close()
}()
_, _ = file.Write([]byte(api.BeginMainMarker))
_, _ = file.Write([]byte{'\n'})
encoder := yaml.NewEncoder(file)
err = encoder.Encode(m.Analysis)
if err != nil {
return
}
_, _ = file.Write([]byte(api.EndMainMarker))
_, _ = file.Write([]byte{'\n'})
err = m.Issues.Write(file)
if err != nil {
return
}
err = m.Deps.Write(file)
if err != nil {
return
}
return
}
2 changes: 0 additions & 2 deletions cmd/analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (
"github.com/konveyor/tackle2-addon/command"
)

type RuleError = builder.RuleError

// Analyzer application analyzer.
type Analyzer struct {
*Data
Expand Down
20 changes: 12 additions & 8 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,20 +148,24 @@ func updateApplication(d *Data, appId uint, issues *builder.Issues, deps *builde
}
//
// Analysis.
appAnalysis := addon.Application.Analysis(appId)
mark := time.Now()
analysis := &api.Analysis{}
manifest := builder.Manifest{
Analysis: api.Analysis{},
Issues: issues,
Deps: deps,
}
if d.Mode.Repository != nil {
analysis.Commit, err = d.Mode.Repository.Head()
manifest.Analysis.Commit, err = d.Mode.Repository.Head()
if err != nil {
return
}
}
err = appAnalysis.Create(
analysis,
binding.MIMEYAML,
issues.Reader(),
deps.Reader())
err = manifest.Write()
if err != nil {
return
}
analysis := addon.Application.Analysis(appId)
_, err = analysis.Create(manifest.Path, binding.MIMEYAML)
if err != nil {
return
}
Expand Down

0 comments on commit 007927e

Please sign in to comment.