Allow loops for creating multiple worksheets

This commit is contained in:
Nathan Coad
2023-11-21 14:12:51 +11:00
parent c2bc2c7e4a
commit 99045ae62d

View File

@@ -56,26 +56,31 @@ paths:
schema:
type: object
required:
- worksheet-name
- out-filename
properties:
files:
type: array
items:
$ref: '#/definitions/direktivFile'
description: File to create before running commands.
default: []
infile:
type: string
description: Name of the json input file to utilise
worksheet-name:
type: string
description: Label for the worksheet created in the spreadsheet
default: "Sheet1"
out-filename:
type: string
description: the filename of the output spreadsheet
default: "output.xlsx"
sheets:
type: array
description: Array of worksheets to create in spreadsheet
items:
type: object
properties:
worksheet-name:
type: string
description: Label for the worksheet created in the spreadsheet
default: "Sheet1"
infile:
type: string
description: Name of the json input file to utilise
input-file:
type: array
items:
$ref: '#/definitions/direktivFile'
description: File to create before running commands
default: []
# direktiv code generation is configured here
x-direktiv-function: |-
functions:
@@ -91,12 +96,14 @@ paths:
action:
function: export-xlsx
input:
files:
- name: input.json
data: |
jq(.input)
worksheet-name: "TestSpreadsheet"
out-filename: example.xlsx
sheets:
- sheet:
worksheet-name: "TestSpreadsheet"
input-file:
- name: input.json
data: |
jq(.input)
- title: Use jq to add a parent key 'input' containing array of objects
content: |-
- id: export-xlsx
@@ -104,19 +111,23 @@ paths:
action:
function: export-xlsx
input:
files:
- name: input.json
data: |
jq(.array | {input: . } | tostring )
worksheet-name: "TestSpreadsheet"
out-filename: example.xlsx
sheets:
- sheet:
worksheet-name: "TestSpreadsheet"
input-file:
- name: input.json
data: |
jq(.array | {input: . } | tostring )
x-direktiv-secrets:
- name: export-xlsxSecret
description: This is a secret value
x-direktiv:
cmds:
- action: exec
exec: /bin/json2excel -inputJson {{- if eq (deref .Infile) "" }} "input.json" {{- else }} {{ .Infile }} {{- end }} -worksheetName "{{ .WorksheetName }}" -outputFilename '{{ .OutFilename }}'
- action: foreach
loop: .Sheets
#exec: /bin/json2excel -inputJson {{- if eq (deref .Infile) "" }} "input.json" {{- else }} {{ .Infile }} {{- end }} -worksheetName "{{ .WorksheetName }}" -outputFilename '{{ .OutFilename }}'
exec: /bin/json2excel -inputJson {{- if eq (deref .Item.Infile) "" }} "input.json" {{- else }} {{ .Item.Infile }} {{- end }} -worksheetName "{{ .Item.WorksheetName }}" -outputFilename '{{ .OutFilename }}'
silent: false
print: true
- action: exec