diff --git a/GitLab/ArtifactsSpec/Type.dhall b/GitLab/ArtifactsSpec/Type.dhall index bebd54a..1016407 100644 --- a/GitLab/ArtifactsSpec/Type.dhall +++ b/GitLab/ArtifactsSpec/Type.dhall @@ -2,8 +2,10 @@ let When = ../When/Type.dhall let Duration = ../Duration/Type.dhall +let Reports = ../Reports/Type.dhall + in { when : When - , expire_in : Duration - , reports : { junit : Optional Text } - , paths : List Text + , expire_in : Optional Duration + , reports : Optional Reports + , paths : Optional (List Text) } diff --git a/GitLab/ArtifactsSpec/append.dhall b/GitLab/ArtifactsSpec/append.dhall index 7d281d7..2042990 100644 --- a/GitLab/ArtifactsSpec/append.dhall +++ b/GitLab/ArtifactsSpec/append.dhall @@ -1,6 +1,10 @@ let ArtifactsSpec = ./Type.dhall -let mergeOptionalRight = ../utils/mergeOptionalRight.dhall +let Reports = ../Reports/package.dhall + +let mergeOptional = ../utils/mergeOptional.dhall + +let mergeOptionalList = ../utils/mergeOptionalList.dhall let append : ArtifactsSpec → ArtifactsSpec → ArtifactsSpec @@ -8,9 +12,9 @@ let append λ(b : ArtifactsSpec) → { when = b.when , expire_in = b.expire_in - , reports.junit = - mergeOptionalRight Text a.reports.junit b.reports.junit - , paths = a.paths # b.paths + , reports = + mergeOptional Reports.Type Reports.append a.reports b.reports + , paths = mergeOptionalList Text a.paths b.paths } in append diff --git a/GitLab/ArtifactsSpec/default.dhall b/GitLab/ArtifactsSpec/default.dhall index 803d937..9d5a60c 100644 --- a/GitLab/ArtifactsSpec/default.dhall +++ b/GitLab/ArtifactsSpec/default.dhall @@ -1,8 +1,12 @@ let When = ../When/Type.dhall +let Duration = ../Duration/Type.dhall + +let Reports = ../Reports/Type.dhall + in { when = When.OnSuccess - , expire_in = ../Duration/fromDays.dhall 30 - , reports.junit = None Text - , paths = [] : List Text + , expire_in = None Duration + , reports = None Reports + , paths = None (List Text) } : ./Type.dhall diff --git a/GitLab/ArtifactsSpec/toJSON.dhall b/GitLab/ArtifactsSpec/toJSON.dhall index 0780081..eb3dd32 100644 --- a/GitLab/ArtifactsSpec/toJSON.dhall +++ b/GitLab/ArtifactsSpec/toJSON.dhall @@ -6,29 +6,48 @@ let JSON = Prelude.JSON let ArtifactsSpec = ../ArtifactsSpec/Type.dhall +let Reports = ../Reports/package.dhall + +let Duration = ../Duration/package.dhall + let Optional/map = Prelude.Optional.map let dropNones = ../utils/dropNones.dhall let When/toJSON = ../When/toJSON.dhall -let Duration/toJSON = ../Duration/toJSON.dhall - let List/map = Prelude.List.map +let Optional/map = Prelude.Optional.map + +let stringsArray + : List Text → JSON.Type + = λ(xs : List Text) → + JSON.array (Prelude.List.map Text JSON.Type JSON.string xs) + in let ArtifactsSpec/toJSON : ArtifactsSpec → JSON.Type = λ(cs : ArtifactsSpec) → let obj - : Map.Type Text JSON.Type + : Map.Type Text (Optional JSON.Type) = toMap - { when = When/toJSON cs.when - , expire_in = Duration/toJSON cs.expire_in + { when = Some (When/toJSON cs.when) + , expire_in = + Optional/map + Duration.Type + JSON.Type + Duration.toJSON + cs.expire_in + , reports = + Optional/map + Reports.Type + JSON.Type + Reports.toJSON + cs.reports , paths = - JSON.array - (List/map Text JSON.Type JSON.string cs.paths) + Optional/map (List Text) JSON.Type stringsArray cs.paths } - in JSON.object obj + in JSON.object (dropNones Text JSON.Type obj) in ArtifactsSpec/toJSON diff --git a/GitLab/Reports/Type.dhall b/GitLab/Reports/Type.dhall new file mode 100644 index 0000000..2dae09d --- /dev/null +++ b/GitLab/Reports/Type.dhall @@ -0,0 +1 @@ +{ junit : Optional (List Text) } diff --git a/GitLab/Reports/append.dhall b/GitLab/Reports/append.dhall new file mode 100644 index 0000000..4950f86 --- /dev/null +++ b/GitLab/Reports/append.dhall @@ -0,0 +1,11 @@ +let Reports = ./Type.dhall + +let mergeOptionalList = ../utils/mergeOptionalList.dhall + +let append + : Reports → Reports → Reports + = λ(a : Reports) → + λ(b : Reports) → + { junit = mergeOptionalList Text a.junit b.junit } + +in append diff --git a/GitLab/Reports/default.dhall b/GitLab/Reports/default.dhall new file mode 100644 index 0000000..cb6dd7b --- /dev/null +++ b/GitLab/Reports/default.dhall @@ -0,0 +1 @@ +{ junit = None (List Text) } : ./Type.dhall diff --git a/GitLab/Reports/package.dhall b/GitLab/Reports/package.dhall new file mode 100644 index 0000000..74be6f1 --- /dev/null +++ b/GitLab/Reports/package.dhall @@ -0,0 +1,5 @@ +{ Type = ./Type.dhall +, default = ./default.dhall +, toJSON = ./toJSON.dhall +, append = ./append.dhall +} diff --git a/GitLab/Reports/toJSON.dhall b/GitLab/Reports/toJSON.dhall new file mode 100644 index 0000000..0a97034 --- /dev/null +++ b/GitLab/Reports/toJSON.dhall @@ -0,0 +1,34 @@ +let Prelude = ../Prelude.dhall + +let Map = Prelude.Map + +let JSON = Prelude.JSON + +let dropNones = ../utils/dropNones.dhall + +let Optional/map = Prelude.Optional.map + +let Reports = ./Type.dhall + +let stringsArray + : List Text → JSON.Type + = λ(xs : List Text) → + JSON.array (Prelude.List.map Text JSON.Type JSON.string xs) + +in let Reports/toJSON + : Reports → JSON.Type + = λ(reports : Reports) → + let everything + : Map.Type Text (Optional JSON.Type) + = toMap + { junit = + Optional/map + (List Text) + JSON.Type + stringsArray + reports.junit + } + + in JSON.object (dropNones Text JSON.Type everything) + + in Reports/toJSON