Skip to content

Commit 91935cc

Browse files
committed
Add Needs type for Job.needs, with job, pipeline, artifacts & optional fields
1 parent 8f87080 commit 91935cc

File tree

8 files changed

+60
-6
lines changed

8 files changed

+60
-6
lines changed

GitLab/Job/Type.dhall

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ let When = ../When/Type.dhall
2020

2121
let Parallel = ../Parallel/Type.dhall
2222

23+
let Needs = ../Needs/Type.dhall
24+
2325
in { stage : Optional Text
2426
, image : Optional Image
2527
, variables : Prelude.Map.Type Text Text
2628
, rules : Optional (List Rule)
2729
, dependencies : Optional (List Text)
28-
, needs : List Text
30+
, needs : Optional (List Needs)
2931
, allow_failure : Bool
3032
, tags : Optional (List Text)
3133
, before_script : Optional Script

GitLab/Job/append.dhall

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ let When = ../When/package.dhall
2323

2424
let Parallel = ../Parallel/package.dhall
2525

26+
let Needs = ../Needs/package.dhall
27+
2628
let mergeOptional = ../utils/mergeOptional.dhall
2729

2830
let mergeOptionalRight = ../utils/mergeOptionalRight.dhall
@@ -38,7 +40,7 @@ let append
3840
, variables = a.variables # b.variables
3941
, rules = mergeOptionalList Rule.Type a.rules b.rules
4042
, dependencies = mergeOptionalList Text a.dependencies b.dependencies
41-
, needs = a.needs # b.needs
43+
, needs = mergeOptionalList Needs.Type a.needs b.needs
4244
, allow_failure = b.allow_failure
4345
, tags = mergeOptionalList Text a.tags b.tags
4446
, before_script = mergeOptionalList Text a.before_script b.before_script

GitLab/Job/default.dhall

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@ let When = ../When/Type.dhall
2020

2121
let Parallel = ../Parallel/Type.dhall
2222

23+
let Needs = ../Needs/Type.dhall
24+
2325
in { stage = None Text
2426
, image = None Image
2527
, variables = Prelude.Map.empty Text Text
2628
, rules = None (List Rule)
2729
, dependencies = None (List Text)
28-
, needs = [] : List Text
30+
, needs = None (List Needs)
2931
, allow_failure = False
3032
, tags = None (List Text)
3133
, before_script = None Script

GitLab/Job/toJSON.dhall

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ let When = ../When/package.dhall
2626

2727
let Parallel = ../Parallel/package.dhall
2828

29+
let Needs = ../Needs/package.dhall
30+
2931
let dropNones = ../utils/dropNones.dhall
3032

3133
let optionalList = ../utils/optionalList.dhall
@@ -77,9 +79,19 @@ in let Job/toJSON
7779

7880
in Some (stringsArrayJSON dependenciesList)
7981
, needs =
80-
if Prelude.List.null Text job.needs
81-
then None JSON.Type
82-
else Some (stringsArrayJSON job.needs)
82+
let needsList = optionalList Needs.Type job.needs
83+
84+
in if Prelude.List.null Needs.Type needsList
85+
then None JSON.Type
86+
else Some
87+
( JSON.array
88+
( Prelude.List.map
89+
Needs.Type
90+
JSON.Type
91+
Needs.toJSON
92+
needsList
93+
)
94+
)
8395
, tags =
8496
Optional/map
8597
(List Text)

GitLab/Needs/Type.dhall

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{ job : Optional Text
2+
, pipeline : Optional Text
3+
, artifacts : Bool
4+
, optional : Bool
5+
}

GitLab/Needs/default.dhall

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{ job = None Text, pipeline = None Text, artifacts = True, optional = False }
2+
: ./Type.dhall

GitLab/Needs/package.dhall

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ Type = ./Type.dhall, default = ./default.dhall, toJSON = ./toJSON.dhall }

GitLab/Needs/toJSON.dhall

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
let Prelude = ../Prelude.dhall
2+
3+
let Map = Prelude.Map
4+
5+
let JSON = Prelude.JSON
6+
7+
let Needs = ./Type.dhall
8+
9+
let dropNones = ../utils/dropNones.dhall
10+
11+
let Optional/map = Prelude.Optional.map
12+
13+
let Needs/toJSON
14+
: Needs JSON.Type
15+
= λ(needs : Needs)
16+
let everything
17+
: Map.Type Text (Optional JSON.Type)
18+
= toMap
19+
{ job = Optional/map Text JSON.Type JSON.string needs.pipeline
20+
, pipeline =
21+
Optional/map Text JSON.Type JSON.string needs.pipeline
22+
, artifacts = Some (JSON.bool needs.artifacts)
23+
, optional = Some (JSON.bool needs.optional)
24+
}
25+
26+
in JSON.object (dropNones Text JSON.Type everything)
27+
28+
in Needs/toJSON

0 commit comments

Comments
 (0)