This repository has been archived by the owner on Mar 30, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
DependencyGatherer.groovy
99 lines (86 loc) · 5.03 KB
/
DependencyGatherer.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* integration-gradle-inspector
*
* Copyright (c) 2022 Synopsys, Inc.
*
* Use subject to the terms and conditions of the Synopsys End User Software License and Maintenance Agreement. All rights reserved worldwide.
*/
package com.blackducksoftware.integration.gradle
import com.synopsys.integration.util.ExcludedIncludedFilter
import com.synopsys.integration.util.ExcludedIncludedWildcardFilter
import com.synopsys.integration.util.IntegrationEscapeUtil
import groovy.transform.TypeChecked
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.tasks.diagnostics.internal.dependencies.AsciiDependencyReportRenderer
import org.slf4j.Logger
import org.slf4j.LoggerFactory
@TypeChecked
class DependencyGatherer {
private final Logger logger = LoggerFactory.getLogger(DependencyGatherer.class)
IntegrationEscapeUtil integrationEscapeUtil = new IntegrationEscapeUtil()
void createAllDependencyGraphFiles(final Project rootProject, String excludedProjectNames, String includedProjectNames, String excludedConfigurationNames, String includedConfigurationNames, File outputDirectory) {
ExcludedIncludedFilter projectFilter = ExcludedIncludedWildcardFilter.fromCommaSeparatedStrings(excludedProjectNames, includedProjectNames)
ExcludedIncludedFilter configurationFilter = ExcludedIncludedWildcardFilter.fromCommaSeparatedStrings(excludedConfigurationNames, includedConfigurationNames)
File rootOutputFile = new File(outputDirectory, 'rootProjectMetadata.txt');
String rootProjectGroup = rootProject.group.toString()
String rootProjectName = rootProject.name.toString()
String rootProjectVersionName = rootProject.version.toString()
def rootProjectMetadataPieces = []
rootProjectMetadataPieces.add('DETECT META DATA START')
rootProjectMetadataPieces.add("rootProjectPath:${rootProject.getProjectDir().getCanonicalPath()}")
rootProjectMetadataPieces.add("rootProjectGroup:${rootProjectGroup}")
rootProjectMetadataPieces.add("rootProjectName:${rootProjectName}")
rootProjectMetadataPieces.add("rootProjectVersion:${rootProjectVersionName}")
rootProjectMetadataPieces.add('DETECT META DATA END')
rootOutputFile << rootProjectMetadataPieces.join('\n')
rootProject.allprojects.each { project ->
if (projectFilter.shouldInclude(project.name)) {
String group = project.group.toString()
String name = project.name.toString()
String version = project.version.toString()
String nameForFile = integrationEscapeUtil.replaceWithUnderscore(name)
File outputFile = new File(outputDirectory, "${nameForFile}_dependencyGraph.txt")
if (outputFile.exists()) {
outputFile.delete()
}
outputFile.createNewFile()
logger.info("starting ${outputFile.canonicalPath}")
AsciiDependencyReportRenderer renderer = new AsciiDependencyReportRenderer()
renderer.setOutputFile(outputFile)
renderer.startProject(project)
SortedSet<Configuration> sortedConfigurations = new TreeSet<Configuration>(new Comparator<Configuration>() {
public int compare(Configuration conf1, Configuration conf2) {
return conf1.getName().compareTo(conf2.getName());
}
});
sortedConfigurations.addAll(project.configurations);
for (Configuration configuration : sortedConfigurations) {
if (configurationFilter.shouldInclude(configuration.name)) {
renderer.startConfiguration(configuration);
renderer.render(configuration);
renderer.completeConfiguration(configuration);
}
}
renderer.completeProject(project)
renderer.complete()
logger.info("adding meta data to ${outputFile.canonicalPath}")
def metaDataPieces = []
metaDataPieces.add('')
metaDataPieces.add('DETECT META DATA START')
metaDataPieces.add("rootProjectPath:${rootProject.getProjectDir().getCanonicalPath()}")
metaDataPieces.add("rootProjectGroup:${rootProjectGroup}")
metaDataPieces.add("rootProjectName:${rootProjectName}")
metaDataPieces.add("rootProjectVersion:${rootProjectVersionName}")
metaDataPieces.add("projectPath:${project.getProjectDir().getCanonicalPath()}")
metaDataPieces.add("projectGroup:${group}")
metaDataPieces.add("projectName:${name}")
metaDataPieces.add("projectVersion:${version}")
metaDataPieces.add('DETECT META DATA END')
metaDataPieces.add('')
outputFile << metaDataPieces.join('\n')
logger.info("completed ${outputFile.canonicalPath}")
}
}
}
}