1
1
package com .amazonaws .gurureviewercli .adapter ;
2
2
3
+ import com .amazonaws .gurureviewercli .exceptions .GuruCliException ;
4
+ import com .amazonaws .gurureviewercli .model .Configuration ;
5
+ import com .amazonaws .gurureviewercli .model .ErrorCodes ;
6
+ import com .amazonaws .gurureviewercli .model .ScanMetaData ;
7
+ import com .amazonaws .gurureviewercli .util .Log ;
8
+ import com .amazonaws .gurureviewercli .util .ZipUtils ;
9
+ import lombok .val ;
10
+ import software .amazon .awssdk .services .s3 .S3Client ;
11
+ import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
12
+
3
13
import java .io .File ;
4
14
import java .io .FileNotFoundException ;
5
15
import java .io .IOException ;
6
16
import java .nio .file .Files ;
7
17
import java .nio .file .Path ;
8
18
import java .util .ArrayList ;
19
+ import java .util .Collections ;
9
20
import java .util .Comparator ;
10
21
import java .util .List ;
11
22
import java .util .UUID ;
12
-
13
- import lombok .val ;
14
- import software .amazon .awssdk .services .s3 .S3Client ;
15
- import software .amazon .awssdk .services .s3 .model .PutObjectRequest ;
16
-
17
- import com .amazonaws .gurureviewercli .exceptions .GuruCliException ;
18
- import com .amazonaws .gurureviewercli .model .Configuration ;
19
- import com .amazonaws .gurureviewercli .model .ErrorCodes ;
20
- import com .amazonaws .gurureviewercli .model .ScanMetaData ;
21
- import com .amazonaws .gurureviewercli .util .Log ;
22
- import com .amazonaws .gurureviewercli .util .ZipUtils ;
23
+ import java .util .stream .Collectors ;
23
24
24
25
/**
25
26
* Utility class class to Zip and upload source and build artifacts to S3.
@@ -70,16 +71,16 @@ public static ScanMetaData zipAndUpload(final Configuration config,
70
71
Log .info ("Adding %d out of %d files under version control in %s" ,
71
72
versionedFiles , totalFiles , repositoryDir .toAbsolutePath ());
72
73
filesToScan .addAll (ZipUtils .getFilesInDirectory (repositoryDir .resolve (".git" )));
73
- sourceKey = zipAndUploadFiles ("analysis-src-" + UUID .randomUUID (), filesToScan , repositoryDir ,
74
- bucketName , tempDir , config .getAccountId (), config .getS3Client ());
74
+ sourceKey = zipAndUploadFiles ("analysis-src-" + UUID .randomUUID (), filesToScan , buildDirs ,
75
+ repositoryDir , bucketName , tempDir , config .getAccountId (), config .getS3Client ());
75
76
} else {
76
77
val sourceDirsAndGit = new ArrayList <Path >(sourceDirs );
77
78
if (config .getBeforeCommit () != null && config .getAfterCommit () != null ) {
78
79
// only add the git folder if a commit range is provided.
79
80
sourceDirsAndGit .add (repositoryDir .resolve (".git" ));
80
81
}
81
- sourceKey = zipAndUploadDir ("analysis-src-" + UUID .randomUUID (), sourceDirsAndGit , repositoryDir ,
82
- bucketName , tempDir , config .getAccountId (), config .getS3Client ());
82
+ sourceKey = zipAndUploadDir ("analysis-src-" + UUID .randomUUID (), sourceDirsAndGit ,
83
+ buildDirs , repositoryDir , bucketName , tempDir , config .getAccountId (), config .getS3Client ());
83
84
}
84
85
final String buildKey ;
85
86
if (buildDirs != null && !buildDirs .isEmpty ()) {
@@ -90,7 +91,7 @@ public static ScanMetaData zipAndUpload(final Configuration config,
90
91
}
91
92
buildKey =
92
93
zipAndUploadDir ("analysis-bin-" + UUID .randomUUID (), buildDirs ,
93
- bucketName , tempDir , config .getAccountId (), config .getS3Client ());
94
+ Collections . emptyList (), bucketName , tempDir , config .getAccountId (), config .getS3Client ());
94
95
} else {
95
96
buildKey = null ;
96
97
}
@@ -114,15 +115,17 @@ public static ScanMetaData zipAndUpload(final Configuration config,
114
115
115
116
private static String zipAndUploadDir (final String artifactName ,
116
117
final List <Path > dirNames ,
118
+ final List <Path > excludeList ,
117
119
final String bucketName ,
118
120
final Path tempDir ,
119
121
final String accountId ,
120
122
final S3Client s3Client ) throws IOException {
121
- return zipAndUploadDir (artifactName , dirNames , null , bucketName , tempDir , accountId , s3Client );
123
+ return zipAndUploadDir (artifactName , dirNames , excludeList , null , bucketName , tempDir , accountId , s3Client );
122
124
}
123
125
124
126
private static String zipAndUploadDir (final String artifactName ,
125
127
final List <Path > dirNames ,
128
+ final List <Path > excludeList ,
126
129
final Path rootDir ,
127
130
final String bucketName ,
128
131
final Path tempDir ,
@@ -134,9 +137,9 @@ private static String zipAndUploadDir(final String artifactName,
134
137
val s3Key = zipFileName ;
135
138
if (!zipFile .toFile ().isFile ()) {
136
139
if (rootDir != null ) {
137
- ZipUtils .pack (dirNames , rootDir , zipFile .toString ());
140
+ ZipUtils .pack (dirNames , excludeList , rootDir , zipFile .toString ());
138
141
} else {
139
- ZipUtils .pack (dirNames , zipFile .toString ());
142
+ ZipUtils .pack (dirNames , excludeList , zipFile .toString ());
140
143
}
141
144
}
142
145
val putObjectRequest = PutObjectRequest .builder ()
@@ -152,6 +155,7 @@ private static String zipAndUploadDir(final String artifactName,
152
155
153
156
private static String zipAndUploadFiles (final String artifactName ,
154
157
final List <Path > files ,
158
+ final List <Path > excludeDirs ,
155
159
final Path rootDir ,
156
160
final String bucketName ,
157
161
final Path tempDir ,
@@ -162,7 +166,7 @@ private static String zipAndUploadFiles(final String artifactName,
162
166
val zipFile = tempDir .resolve (zipFileName ).toAbsolutePath ();
163
167
val s3Key = zipFileName ;
164
168
if (!zipFile .toFile ().isFile ()) {
165
- ZipUtils .packFiles (files , rootDir , zipFile );
169
+ ZipUtils .packFiles (files , excludeDirs , rootDir , zipFile );
166
170
}
167
171
val putObjectRequest = PutObjectRequest .builder ()
168
172
.bucket (bucketName )
@@ -175,6 +179,11 @@ private static String zipAndUploadFiles(final String artifactName,
175
179
return null ;
176
180
}
177
181
182
+ private static List <Path > filterAgainstExcludeDirs (final List <Path > original , final List <Path > exclude ) {
183
+ return original .stream ().filter (path -> exclude .stream ().anyMatch (ex -> path .startsWith (ex )))
184
+ .collect (Collectors .toList ());
185
+ }
186
+
178
187
private ArtifactAdapter () {
179
188
// do not instantiate
180
189
}
0 commit comments