Skip to content

Commit

Permalink
Render groupedJobs to be friendlier to jq
Browse files Browse the repository at this point in the history
Also update README with native rendering instructions for grouped jobs.
  • Loading branch information
akshaymankar committed Nov 26, 2019
1 parent c3edc39 commit eb774f1
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 12 deletions.
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ To use dhall-concourse you need to install [dhall-fly](https://github.com/akshay

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

#### Jobs without Groups

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:

```dhall
let Concourse =
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.3.0/package.dhall
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.5.0/package.dhall

let jobs = ./jobs.dhall

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

#### Jobs with groups

Similarly, to render a list of `GroupedJob`s in a filed called `grouped-jobs.dhall`, this would be the expression to render:

```dhall
let Concourse =
https://raw.githubusercontent.com/akshaymankar/dhall-concourse/0.5.0/package.dhall

let groupedJobs = ./grouped-jobs.dhall

in Concourse.render.groupedJobs groupedJobs
```

Now you can render this using dhall-to-json and jq like this:

```bash
dhall-to-json <<< './pipeline.dhall' \
| jq '.resources = (.resources|unique)' \
| jq '.resource_types = (.resource_types|unique)' \
| jq '.groups = (.groups | group_by(.name) | map({name: .[0].name, jobs: (map(.jobs) | flatten) }))'
```

## Defining a pipeline

### Example 1: Hello World
Expand Down
2 changes: 1 addition & 1 deletion package.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
./helpers/package.dhall sha256:94d9aab795fe7049da8c7904d6faa7c7be60ed10a59565c33d7cf9d026a6968d
? ./helpers/package.dhall
, render =
./render/package.dhall sha256:9817b38973cc0354670cbd0419ca79b19e6999d7d24ed92bb5b41dd60245f750
./render/package.dhall sha256:380eab61bcc75473589242aa13011d0912f0634745f84c185296594c557bacb7
? ./render/package.dhall
, extractors =
./extractors/package.dhall sha256:761aabbb030ca0fca473273e7c8b45c29dcd848388bdb767db7322a1243a5dd6
Expand Down
22 changes: 13 additions & 9 deletions render/groupedJobs.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,21 @@ in λ(groupedJobs : List Types.GroupedJob)
Types.Job
(λ(groupedJob : Types.GroupedJob) groupedJob.job)
groupedJobs

let jobGroups =
Prelude.List.map

let RenderedGroup = { name : Text, jobs : List Text }

let jobGroups
: List RenderedGroup
= Prelude.List.concatMap
Types.GroupedJob
(Prelude.Map.Entry Text (List Text))
RenderedGroup
( λ(groupedJob : Types.GroupedJob)
Prelude.Map.keyValue
(List Text)
groupedJob.job.name
Prelude.List.map
Text
RenderedGroup
(λ(g : Text) { name = g, jobs = [ groupedJob.job.name ] })
groupedJob.groups
)
groupedJobs
in ./pipeline.dhall jobs { jobGroups = jobGroups }

in ./pipeline.dhall jobs { groups = jobGroups }
2 changes: 1 addition & 1 deletion render/package.dhall
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@
./pipeline.dhall sha256:d66fb1637db9cf4680213b2b6939a5d5cff64b2f4e5d4e24444d49d40f92853e
? ./pipeline.dhall
, groupedJobs =
./groupedJobs.dhall sha256:807ef57f86ae37a22f7099a23c684ab45c59034c9dacfcd467b9b623e649ed6b
./groupedJobs.dhall sha256:9d56b1f88ec737fa02cd8eddc5fa239fd89cb6c509130ea83295899c2ac49c26
? ./groupedJobs.dhall
}

0 comments on commit eb774f1

Please sign in to comment.