Skip to content

Commit

Permalink
Only parse analyzer targets if required by the generator
Browse files Browse the repository at this point in the history
  • Loading branch information
Javier-varez committed Nov 24, 2022
1 parent f84f78a commit 840a669
Showing 1 changed file with 34 additions and 23 deletions.
57 changes: 34 additions & 23 deletions RULES/core/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@ type targetInfo struct {
}

type generatorInput struct {
DbtVersion version
SourceDir string
WorkingDir string
OutputDir string
CmdlineFlags map[string]string
WorkspaceFlags map[string]string
CompletionsOnly bool
RunArgs []string
TestArgs []string
Layout string
SelectedTargets []string
DbtVersion version
SourceDir string
WorkingDir string
OutputDir string
CmdlineFlags map[string]string
WorkspaceFlags map[string]string
CompletionsOnly bool
RunArgs []string
TestArgs []string
Layout string
SelectedTargets []string
BuildAnalyzerTargets bool
}

type generatorOutput struct {
Expand All @@ -55,6 +56,13 @@ func checkHasAnySelectedTargetsOtherThanReports(vars map[string]interface{}) boo
return false
}

func isAnalyzerReportTarget(target interface{}) bool {
if _, ok := target.(analyzerReportInterface); ok {
return true
}
return false
}

func isTargetSelected(targetPath string) bool {
for _, path := range input.SelectedTargets {
if path == targetPath {
Expand Down Expand Up @@ -117,24 +125,27 @@ func GeneratorMain(vars map[string]interface{}) {
targetsForCoverage = append(targetsForCoverage, cov)
}
}
if sa, ok := tgt.(AnalyzeInterface); ok {
if !hasAnySelectedTargetsOtherThanReports || isTargetSelected(targetPath) {
targetsForAnalyze = append(targetsForAnalyze, sa)
if input.BuildAnalyzerTargets {
if sa, ok := tgt.(AnalyzeInterface); ok {
if !hasAnySelectedTargetsOtherThanReports || isTargetSelected(targetPath) {
targetsForAnalyze = append(targetsForAnalyze, sa)
}
}
}
}

for _, targetPath := range targetPaths {
tgt := vars[targetPath]
if build, ok := tgt.(coverageReportInterface); ok {
tgt = build.CoverageReport(targetsForCoverage)
}
if build, ok := tgt.(analyzerReportInterface); ok {
tgt = build.AnalyzerReport(targetsForAnalyze)
}

if build, ok := tgt.(buildInterface); ok {
ctx.handleTarget(targetPath, build)
if !isAnalyzerReportTarget(tgt) || input.BuildAnalyzerTargets {
if build, ok := tgt.(coverageReportInterface); ok {
tgt = build.CoverageReport(targetsForCoverage)
}
if build, ok := tgt.(analyzerReportInterface); ok {
tgt = build.AnalyzerReport(targetsForAnalyze)
}
if build, ok := tgt.(buildInterface); ok {
ctx.handleTarget(targetPath, build)
}
}
}
output.NinjaFile = ctx.ninjaFile()
Expand Down

0 comments on commit 840a669

Please sign in to comment.