Merge branch 'main' into 18842-arv-mount-disk-config
[arvados.git] / sdk / cwl / tests / 12213-keepref-expr.cwl
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: Apache-2.0
4
5 cwlVersion: v1.0
6 class: ExpressionTool
7 requirements:
8   InlineJavascriptRequirement: {}
9 inputs:
10   dir: Directory
11 outputs:
12   out: Directory[]
13 expression: |
14   ${
15     var samples = {};
16     var pattern = /^(.+)(_S[0-9]{1,3}_)(.+)$/;
17     inputs.dir.listing = inputs.dir.listing.sort(function(a, b) { return a.basename.localeCompare(b.basename); });
18     for (var i = 0; i < inputs.dir.listing.length; i++) {
19       var file = inputs.dir.listing[i];
20       var groups = file.basename.match(pattern);
21       if (groups) {
22         var sampleid = groups[1];
23         if (!samples[sampleid]) {
24           samples[sampleid] = [];
25         }
26         samples[sampleid].push(file);
27       }
28     }
29     var dirs = [];
30     Object.keys(samples).sort().forEach(function(sampleid, _) {
31       dirs.push({"class": "Directory",
32                  "basename": sampleid,
33                  "listing": samples[sampleid]});
34     });
35     return {"out": dirs};
36   }