cwlVersion: v1.0 doc: create textures and pack them to be a stellaris mod class: Workflow requirements: - class: ScatterFeatureRequirement - class: SubworkflowFeatureRequirement - class: InlineJavascriptRequirement inputs: outlines: Directory mod_name: string gridsize: string montage_font: File localisation: Directory outputs: texture_map: type: Directory[] outputSource: organize/folders steps: gradients: run: ../textures/tools/gradients_gen.cwl in: [] out: [fill_gradient, highlight_gradient] extractListing: in: folder: outlines out: [outlines] run: class: ExpressionTool inputs: folder: Directory outputs: outlines: File[] expression: | $({ 'outlines': inputs.folder.listing }) textures: run: ../textures/emblem_textures.cwl scatter: outline in: outline: extractListing/outlines fill_gradient: gradients/fill_gradient highlight_gradient: gradients/highlight_gradient out: [texture_default, texture_map, texture_small] # generate preview for all the emblems montage_default: run: ../workshop/montage.cwl in: montagename: default: 'montage_default.png' images: textures/texture_default label: default: '%t' gridsize: gridsize font: montage_font fontsize: default: '16' imagegeometry: default: '128x128+1+1' out: [montage] montage_map: run: ../workshop/montage.cwl in: montagename: default: 'montage_map.png' images: textures/texture_map gridsize: gridsize font: montage_font fontsize: default: '0' imagegeometry: default: '256x256+1+1' out: [montage] montage_small: run: ../workshop/montage.cwl in: montagename: default: 'montage_small.png' images: textures/texture_small gridsize: gridsize font: montage_font fontsize: default: '0' imagegeometry: default: '24x24+1+1' out: [montage] # Pack textures and everything else into the right folders organize: in: mod_name: mod_name default: textures/texture_default map: textures/texture_map small: textures/texture_small montage_default: montage_default/montage montage_map: montage_map/montage montage_small: montage_small/montage localisation: localisation out: [folders] run: class: ExpressionTool id: 'organize' inputs: mod_name: string default: File[] map: File[] small: File[] montage_default: File montage_map: File montage_small: File localisation: Directory outputs: folders: Directory[] expression: | ${ var folders = []; inputs.localisation.listing.forEach(function(f) { f.basename = inputs.mod_name + '_l_' + f.basename }); folders.push({ 'class': 'Directory', 'basename': 'out/' + inputs.mod_name + '/flags/' + inputs.mod_name, 'listing': inputs.default }); folders.push({ 'class': 'Directory', 'basename': 'out/' + inputs.mod_name + '/flags/' + inputs.mod_name + '/map', 'listing': inputs.map }); folders.push({ 'class': 'Directory', 'basename': 'out/' + inputs.mod_name + '/flags/' + inputs.mod_name + '/small', 'listing': inputs.small }); folders.push({ 'class': 'Directory', 'basename': 'out/workshop', 'listing': [inputs.montage_default, inputs.montage_map, inputs.montage_small] }); folders.push({ 'class': 'Directory', 'basename': 'out/' + inputs.mod_name + '/localisation/', 'listing': inputs.localisation.listing }); return { 'folders': folders }; }