11package com .amazonaws .gurureviewercli .adapter ;
22
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+
313import java .io .File ;
414import java .io .FileNotFoundException ;
515import java .io .IOException ;
616import java .nio .file .Files ;
717import java .nio .file .Path ;
818import java .util .ArrayList ;
19+ import java .util .Collections ;
920import java .util .Comparator ;
1021import java .util .List ;
1122import 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 ;
2324
2425/**
2526 * Utility class class to Zip and upload source and build artifacts to S3.
@@ -70,16 +71,16 @@ public static ScanMetaData zipAndUpload(final Configuration config,
7071 Log .info ("Adding %d out of %d files under version control in %s" ,
7172 versionedFiles , totalFiles , repositoryDir .toAbsolutePath ());
7273 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 ());
7576 } else {
7677 val sourceDirsAndGit = new ArrayList <Path >(sourceDirs );
7778 if (config .getBeforeCommit () != null && config .getAfterCommit () != null ) {
7879 // only add the git folder if a commit range is provided.
7980 sourceDirsAndGit .add (repositoryDir .resolve (".git" ));
8081 }
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 ());
8384 }
8485 final String buildKey ;
8586 if (buildDirs != null && !buildDirs .isEmpty ()) {
@@ -90,7 +91,7 @@ public static ScanMetaData zipAndUpload(final Configuration config,
9091 }
9192 buildKey =
9293 zipAndUploadDir ("analysis-bin-" + UUID .randomUUID (), buildDirs ,
93- bucketName , tempDir , config .getAccountId (), config .getS3Client ());
94+ Collections . emptyList (), bucketName , tempDir , config .getAccountId (), config .getS3Client ());
9495 } else {
9596 buildKey = null ;
9697 }
@@ -114,15 +115,17 @@ public static ScanMetaData zipAndUpload(final Configuration config,
114115
115116 private static String zipAndUploadDir (final String artifactName ,
116117 final List <Path > dirNames ,
118+ final List <Path > excludeList ,
117119 final String bucketName ,
118120 final Path tempDir ,
119121 final String accountId ,
120122 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 );
122124 }
123125
124126 private static String zipAndUploadDir (final String artifactName ,
125127 final List <Path > dirNames ,
128+ final List <Path > excludeList ,
126129 final Path rootDir ,
127130 final String bucketName ,
128131 final Path tempDir ,
@@ -134,9 +137,9 @@ private static String zipAndUploadDir(final String artifactName,
134137 val s3Key = zipFileName ;
135138 if (!zipFile .toFile ().isFile ()) {
136139 if (rootDir != null ) {
137- ZipUtils .pack (dirNames , rootDir , zipFile .toString ());
140+ ZipUtils .pack (dirNames , excludeList , rootDir , zipFile .toString ());
138141 } else {
139- ZipUtils .pack (dirNames , zipFile .toString ());
142+ ZipUtils .pack (dirNames , excludeList , zipFile .toString ());
140143 }
141144 }
142145 val putObjectRequest = PutObjectRequest .builder ()
@@ -152,6 +155,7 @@ private static String zipAndUploadDir(final String artifactName,
152155
153156 private static String zipAndUploadFiles (final String artifactName ,
154157 final List <Path > files ,
158+ final List <Path > excludeDirs ,
155159 final Path rootDir ,
156160 final String bucketName ,
157161 final Path tempDir ,
@@ -162,7 +166,7 @@ private static String zipAndUploadFiles(final String artifactName,
162166 val zipFile = tempDir .resolve (zipFileName ).toAbsolutePath ();
163167 val s3Key = zipFileName ;
164168 if (!zipFile .toFile ().isFile ()) {
165- ZipUtils .packFiles (files , rootDir , zipFile );
169+ ZipUtils .packFiles (files , excludeDirs , rootDir , zipFile );
166170 }
167171 val putObjectRequest = PutObjectRequest .builder ()
168172 .bucket (bucketName )
@@ -175,6 +179,11 @@ private static String zipAndUploadFiles(final String artifactName,
175179 return null ;
176180 }
177181
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+
178187 private ArtifactAdapter () {
179188 // do not instantiate
180189 }
0 commit comments