diff --git a/cmd/main.go b/cmd/main.go index d7c6a74..7e7011f 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -112,50 +112,57 @@ func main() { if err != nil { return } - depAnalyzer := DepAnalyzer{} - depAnalyzer.Data = d - deps, err := depAnalyzer.Run() - if err != nil { - return - } - // - // Post report. - appAnalysis := addon.Application.Analysis(application.ID) - mark := time.Now() - analysis := &api.Analysis{} - err = appAnalysis.Create( - analysis, - binding.MIMEYAML, - issues.Reader(), - deps.Reader()) - if err == nil { - addon.Activity("Analysis reported. duration: %s", time.Since(mark)) - } else { - ruleErr := &RuleError{} - if errors.As(err, &ruleErr) { - ruleErr.Report() - err = nil + if !d.Mode.Discovery { + depAnalyzer := DepAnalyzer{} + depAnalyzer.Data = d + deps, dErr := depAnalyzer.Run() + if dErr != nil { + err = dErr + return + } + // + // Post report. + appAnalysis := addon.Application.Analysis(application.ID) + mark := time.Now() + analysis := &api.Analysis{} + err = appAnalysis.Create( + analysis, + binding.MIMEYAML, + issues.Reader(), + deps.Reader()) + if err == nil { + addon.Activity("Analysis reported. duration: %s", time.Since(mark)) + } else { + ruleErr := &RuleError{} + if errors.As(err, &ruleErr) { + ruleErr.Report() + err = nil + } + return + } + // + // Facts + facts := addon.Application.Facts(application.ID) + facts.Source(Source) + err = facts.Replace(issues.Facts()) + if err == nil { + addon.Activity("Facts updated.") + } else { + return } - return } + // // Tags. if d.Tagger.Enabled { + if d.Tagger.Source == "" { + d.Tagger.Source = Source + } err = d.Tagger.Update(application.ID, issues.Tags()) if err != nil { return } } - // - // Facts - facts := addon.Application.Facts(application.ID) - facts.Source(Source) - err = facts.Replace(issues.Facts()) - if err == nil { - addon.Activity("Facts updated.") - } else { - return - } addon.Activity("Done.") diff --git a/cmd/mode.go b/cmd/mode.go index 3b7e670..94f89d4 100644 --- a/cmd/mode.go +++ b/cmd/mode.go @@ -15,6 +15,7 @@ import ( // Mode settings. type Mode struct { + Discovery bool `json:"discovery"` Binary bool `json:"binary"` Artifact string `json:"artifact"` WithDeps bool `json:"withDeps"` diff --git a/cmd/tagger.go b/cmd/tagger.go index c36def4..4e650f0 100644 --- a/cmd/tagger.go +++ b/cmd/tagger.go @@ -12,7 +12,8 @@ var TagExp = regexp.MustCompile("(.+)(=)(.+)") // Tagger tags an application. type Tagger struct { - Enabled bool `json:"enabled"` + Enabled bool `json:"enabled"` + Source string `json:"source"` } // AddOptions adds analyzer options.