# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0

cwlVersion: v1.0
class: ExpressionTool
requirements:
  InlineJavascriptRequirement: {}
inputs:
  dir: Directory
outputs:
  out: Directory[]
expression: |
  ${
    var samples = {};
    var pattern = /^(.+)(_S[0-9]{1,3}_)(.+)$/;
    inputs.dir.listing = inputs.dir.listing.sort(function(a, b) { return a.basename.localeCompare(b.basename); });
    for (var i = 0; i < inputs.dir.listing.length; i++) {
      var file = inputs.dir.listing[i];
      var groups = file.basename.match(pattern);
      if (groups) {
        var sampleid = groups[1];
        if (!samples[sampleid]) {
          samples[sampleid] = [];
        }
        samples[sampleid].push(file);
      }
    }
    var dirs = [];
    Object.keys(samples).sort().forEach(function(sampleid, _) {
      dirs.push({"class": "Directory",
                 "basename": sampleid,
                 "listing": samples[sampleid]});
    });
    return {"out": dirs};
  }