Skip to content

Commit eb774f1

Browse files
committed
Render groupedJobs to be friendlier to jq
Also update README with native rendering instructions for grouped jobs.
1 parent c3edc39 commit eb774f1

File tree

4 files changed

+40
-12
lines changed

4 files changed

+40
-12
lines changed

README.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ To use dhall-concourse you need to install [dhall-fly](https://github.com/akshay
2626

2727
### Using dhall-to-json and jq (Experimental)
2828

29+
#### Jobs without Groups
30+
2931
To use native rendering to render a list of jobs in a file called `jobs.dhall`, you'd have to write a dhall expression like this:
3032

3133
```dhall
3234
let Concourse =
33-
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.3.0/package.dhall
35+
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.5.0/package.dhall
3436

3537
let jobs = ./jobs.dhall
3638

@@ -45,6 +47,28 @@ dhall-to-json <<< './pipeline.dhall' \
4547
| jq '.resource_types = (.resource_types|unique)'
4648
```
4749

50+
#### Jobs with groups
51+
52+
Similarly, to render a list of `GroupedJob`s in a filed called `grouped-jobs.dhall`, this would be the expression to render:
53+
54+
```dhall
55+
let Concourse =
56+
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.5.0/package.dhall
57+
58+
let groupedJobs = ./grouped-jobs.dhall
59+
60+
in Concourse.render.groupedJobs groupedJobs
61+
```
62+
63+
Now you can render this using dhall-to-json and jq like this:
64+
65+
```bash
66+
dhall-to-json <<< './pipeline.dhall' \
67+
| jq '.resources = (.resources|unique)' \
68+
| jq '.resource_types = (.resource_types|unique)' \
69+
| jq '.groups = (.groups | group_by(.name) | map({name: .[0].name, jobs: (map(.jobs) | flatten) }))'
70+
```
71+
4872
## Defining a pipeline
4973

5074
### Example 1: Hello World

package.dhall

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
./helpers/package.dhall sha256:94d9aab795fe7049da8c7904d6faa7c7be60ed10a59565c33d7cf9d026a6968d
1212
? ./helpers/package.dhall
1313
, render =
14-
./render/package.dhall sha256:9817b38973cc0354670cbd0419ca79b19e6999d7d24ed92bb5b41dd60245f750
14+
./render/package.dhall sha256:380eab61bcc75473589242aa13011d0912f0634745f84c185296594c557bacb7
1515
? ./render/package.dhall
1616
, extractors =
1717
./extractors/package.dhall sha256:761aabbb030ca0fca473273e7c8b45c29dcd848388bdb767db7322a1243a5dd6

render/groupedJobs.dhall

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,21 @@ in λ(groupedJobs : List Types.GroupedJob)
99
Types.Job
1010
(λ(groupedJob : Types.GroupedJob) groupedJob.job)
1111
groupedJobs
12-
13-
let jobGroups =
14-
Prelude.List.map
12+
13+
let RenderedGroup = { name : Text, jobs : List Text }
14+
15+
let jobGroups
16+
: List RenderedGroup
17+
= Prelude.List.concatMap
1518
Types.GroupedJob
16-
(Prelude.Map.Entry Text (List Text))
19+
RenderedGroup
1720
( λ(groupedJob : Types.GroupedJob)
18-
Prelude.Map.keyValue
19-
(List Text)
20-
groupedJob.job.name
21+
Prelude.List.map
22+
Text
23+
RenderedGroup
24+
(λ(g : Text) { name = g, jobs = [ groupedJob.job.name ] })
2125
groupedJob.groups
2226
)
2327
groupedJobs
24-
25-
in ./pipeline.dhall jobs { jobGroups = jobGroups }
28+
29+
in ./pipeline.dhall jobs { groups = jobGroups }

render/package.dhall

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@
2323
./pipeline.dhall sha256:d66fb1637db9cf4680213b2b6939a5d5cff64b2f4e5d4e24444d49d40f92853e
2424
? ./pipeline.dhall
2525
, groupedJobs =
26-
./groupedJobs.dhall sha256:807ef57f86ae37a22f7099a23c684ab45c59034c9dacfcd467b9b623e649ed6b
26+
./groupedJobs.dhall sha256:9d56b1f88ec737fa02cd8eddc5fa239fd89cb6c509130ea83295899c2ac49c26
2727
? ./groupedJobs.dhall
2828
}

0 commit comments

Comments
 (0)