@@ -46,12 +46,12 @@ class SummaryCreator {
4646 workflowSummary[' container' ] = workflow. container
4747 }
4848
49- workflowSummary[' launchDir' ] = workflow. launchDir
50- workflowSummary[' workDir' ] = workflow. workDir
51- workflowSummary[' projectDir' ] = workflow. projectDir
49+ workflowSummary[' launchDir' ] = maybeMask( workflow. launchDir)
50+ workflowSummary[' workDir' ] = maybeMask( workflow. workDir)
51+ workflowSummary[' projectDir' ] = maybeMask( workflow. projectDir)
5252 workflowSummary[' userName' ] = workflow. userName
5353 workflowSummary[' profile' ] = workflow. profile
54- workflowSummary[' configFiles' ] = workflow. configFiles ? workflow. configFiles. join(' , ' ) : ' '
54+ workflowSummary[' configFiles' ] = maybeMask( workflow. configFiles ? workflow. configFiles. join(' , ' ) : ' ' )
5555
5656 // Get pipeline parameters defined in JSON Schema
5757 def Map paramsSummary = [:]
@@ -114,32 +114,49 @@ class SummaryCreator {
114114
115115 // We have a default in the schema, and this isn't it
116116 if (defaultValue != null && value != defaultValue) {
117- summary. put(param, maybeMaskFusionMount(maybeMaskBucketNames(( value)) ))
117+ summary. put(param, maybeMask( value))
118118 }
119119 // No default in the schema, and this isn't empty or false
120120 else if (defaultValue == null && value != " " && value != null && value != false && value != ' false' ) {
121- summary. put(param, maybeMaskFusionMount(maybeMaskBucketNames(( value)) ))
121+ summary. put(param, maybeMask( value))
122122 }
123123 }
124124 }
125125 return summary
126126 }
127127
128- private String maybeMaskFusionMount (String value ) {
128+ private CharSequence maybeMask (Path value ) {
129+ return maybeMask(value. toString())
130+ }
131+
132+ private CharSequence maybeMask (CharSequence value ) {
133+ return maybeMaskFusionMount(maybeMaskBucketNames(maybeMaskFromPaths(value)))
134+ }
135+
136+ private CharSequence maybeMaskFusionMount (CharSequence value ) {
129137 if (config. summary. maskFusionMount) {
130138 return value. replace(' /fusion' , ' ' )
131139 }
132140 return value
133141 }
134142
135143 // see https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
136- static final String S3_BUCKET_PATH_PREFIX = ' \\ /s3\\ /[a-z0-9][a-z0-9-]{1,61}[a-z0-9]\\ /'
137- static final String S3_BUCKET_URI_PREFIX = ' s3:\\ /\\ /[a-z0-9][a-z0-9-]{1,61}[a-z0-9]\\ /'
144+ static final CharSequence S3_BUCKET_PATH_PREFIX = ' \\ /s3\\ /[a-z0-9][a-z0-9-]{1,61}[a-z0-9]\\ /'
145+ static final CharSequence S3_BUCKET_URI_PREFIX = ' s3:\\ /\\ /[a-z0-9][a-z0-9-]{1,61}[a-z0-9]\\ /'
138146
139- private String maybeMaskBucketNames (String value ) {
140- if (config. summary. maskBucketNames) {
141- value. replaceAll(S3_BUCKET_PATH_PREFIX , ' ' )
142- value. replaceAll(S3_BUCKET_URI_PREFIX , ' ' )
147+ private CharSequence maybeMaskBucketNames (CharSequence value ) {
148+ if (config. summary. maskBucketNames) {
149+ value = value. replaceAll(S3_BUCKET_PATH_PREFIX , ' /[** masked **]/' )
150+ value = value. replaceAll(S3_BUCKET_URI_PREFIX , ' [** masked **]/' )
151+ }
152+ return value
153+ }
154+
155+ private CharSequence maybeMaskFromPaths (CharSequence value ) {
156+ if (config. summary. maskFromPaths != null && config. summary. maskFromPaths. size() > 0 ) {
157+ for (CharSequence toReplace : config. summary. maskFromPaths) {
158+ value = value. replace(toReplace, ' [** masked **]' )
159+ }
143160 }
144161 return value
145162 }
0 commit comments