Skip to content

Commit 729419d

Browse files
authored
Merge pull request #1 from AmirStha/master
Add support for cache:key:files to CacheSpec
2 parents 64fdeb3 + b306c66 commit 729419d

File tree

11 files changed

+108
-7
lines changed

11 files changed

+108
-7
lines changed

GitLab/CacheKey/Type.dhall

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
let CacheKeyFiles = ../CacheKeyFiles/Type.dhall
2+
3+
in < Files : CacheKeyFiles | Text : Text >

GitLab/CacheKey/package.dhall

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

GitLab/CacheKey/toJSON.dhall

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
let Prelude = ../Prelude.dhall
2+
3+
let JSON = Prelude.JSON
4+
5+
let CacheKey = ./Type.dhall
6+
7+
let CacheKeyFiles = ../CacheKeyFiles/package.dhall
8+
9+
let CacheKey/toJSON
10+
: CacheKey JSON.Type
11+
= λ(cku : CacheKey)
12+
merge
13+
{ CacheKeyFiles = λ(c : CacheKeyFiles.Type) CacheKeyFiles.toJSON c
14+
, Text = λ(t : Text) JSON.string t
15+
}
16+
cku
17+
18+
in CacheKey/toJSON

GitLab/CacheKeyFiles/Type.dhall

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ files : List Text, prefix : Optional Text }

GitLab/CacheKeyFiles/default.dhall

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ files = [] : List Text, prefix = None Text } : ./Type.dhall

GitLab/CacheKeyFiles/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/CacheKeyFiles/toJSON.dhall

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
let Prelude = ../Prelude.dhall
2+
3+
let Map = Prelude.Map
4+
5+
let JSON = Prelude.JSON
6+
7+
let CacheKeyFiles = ./Type.dhall
8+
9+
let dropNones = ../utils/dropNones.dhall
10+
11+
let Optional/map = Prelude.Optional.map
12+
13+
let List/map = Prelude.List.map
14+
15+
let stringsArray
16+
: List Text JSON.Type
17+
= λ(xs : List Text)
18+
JSON.array (Prelude.List.map Text JSON.Type JSON.string xs)
19+
20+
in let CacheKeyFiles/toJSON
21+
: CacheKeyFiles JSON.Type
22+
= λ(ck : CacheKeyFiles)
23+
let obj
24+
: Map.Type Text (Optional JSON.Type)
25+
= toMap
26+
{ files =
27+
if Prelude.List.null Text ck.files
28+
then None JSON.Type
29+
else Some
30+
( JSON.array
31+
( Prelude.List.map
32+
Text
33+
JSON.Type
34+
JSON.string
35+
ck.files
36+
)
37+
)
38+
, prefix = Optional/map Text JSON.Type JSON.string ck.prefix
39+
}
40+
41+
in JSON.object (dropNones Text JSON.Type obj)
42+
43+
in CacheKeyFiles/toJSON

GitLab/CacheSpec/Type.dhall

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ let When = ../When/Type.dhall
22

33
let CachePolicy = ../CachePolicy/Type.dhall
44

5-
in { key : Text
5+
let CacheKey = ../CacheKey/Type.dhall
6+
7+
in { key : Optional CacheKey
68
, paths : List Text
79
, untracked : Optional Bool
810
, when : When

GitLab/CacheSpec/default.dhall

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,12 @@ let When = ../When/Type.dhall
22

33
let CachePolicy = ../CachePolicy/Type.dhall
44

5-
in { untracked = None Bool, when = When.OnSuccess, policy = None CachePolicy }
5+
let CacheKey = ../CacheKey/Type.dhall
6+
7+
in { key = None CacheKey
8+
, when = When.OnSuccess
9+
, paths = [] : List Text
10+
, untracked = None Bool
11+
, policy = None CachePolicy
12+
}
13+
: ./Type.dhall

GitLab/CacheSpec/toJSON.dhall

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ let JSON = Prelude.JSON
66

77
let CacheSpec = ./Type.dhall
88

9+
let CacheKey = ../CacheKey/package.dhall
10+
11+
let stringsArray
12+
: List Text JSON.Type
13+
= λ(xs : List Text)
14+
JSON.array (Prelude.List.map Text JSON.Type JSON.string xs)
15+
916
let dropNones = ../utils/dropNones.dhall
1017

1118
let Optional/map = Prelude.Optional.map
@@ -16,14 +23,28 @@ in let CacheSpec/toJSON
1623
: CacheSpec JSON.Type
1724
= λ(cs : CacheSpec)
1825
let obj
19-
: Map.Type Text JSON.Type
26+
: Map.Type Text (Optional JSON.Type)
2027
= toMap
21-
{ key = JSON.string cs.key
28+
{ key =
29+
Optional/map
30+
CacheKey.Type
31+
JSON.Type
32+
CacheKey.toJSON
33+
cs.key
2234
, paths =
23-
JSON.array
24-
(List/map Text JSON.Type JSON.string cs.paths)
35+
if Prelude.List.null Text cs.paths
36+
then None JSON.Type
37+
else Some
38+
( JSON.array
39+
( List/map
40+
Text
41+
JSON.Type
42+
JSON.string
43+
cs.paths
44+
)
45+
)
2546
}
2647

27-
in JSON.object obj
48+
in JSON.object (dropNones Text JSON.Type obj)
2849

2950
in CacheSpec/toJSON

0 commit comments

Comments
 (0)