step.dhall 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. let Prelude =
  2. https://prelude.dhall-lang.org/package.dhall sha256:534e4a9e687ba74bfac71b30fc27aa269c0465087ef79bf483e876781602a454
  3. let Types = ./../types/package.dhall
  4. let RenderTypes = ./types.dhall
  5. let stepName
  6. : Optional Text → Types.Resource → Text
  7. = λ(providedName : Optional Text)
  8. → λ(resource : Types.Resource)
  9. → Optional/fold Text providedName Text (λ(t : Text) → t) resource.name
  10. let resourceName
  11. : Optional Text → Types.Resource → Optional Text
  12. = λ(providedName : Optional Text)
  13. → λ(resource : Types.Resource)
  14. → Optional/fold
  15. Text
  16. providedName
  17. (Optional Text)
  18. (λ(t : Text) → Some resource.name)
  19. (None Text)
  20. let renderGet
  21. : Types.GetStep → RenderTypes.BasicStep
  22. = λ(g : Types.GetStep)
  23. → RenderTypes.BasicStep.Get
  24. ( g
  25. ⫽ { get =
  26. stepName g.get g.resource
  27. , resource =
  28. resourceName g.get g.resource
  29. }
  30. )
  31. let renderPut
  32. : Types.PutStep → RenderTypes.BasicStep
  33. = λ(p : Types.PutStep)
  34. → RenderTypes.BasicStep.Put
  35. ( p
  36. ⫽ { put =
  37. stepName p.put p.resource
  38. , resource =
  39. resourceName p.put p.resource
  40. }
  41. )
  42. let renderTaskConfig =
  43. λ(c : Types.TaskConfig) → { config = Some c, file = None Text }
  44. let renderTaskFile =
  45. λ(f : Text) → { config = None Types.TaskConfig, file = Some f }
  46. let renderTask
  47. : Types.TaskStep → RenderTypes.BasicStep
  48. = λ(t : Types.TaskStep)
  49. → RenderTypes.BasicStep.Task
  50. ( t
  51. ⫽ ( merge
  52. { Config = renderTaskConfig, File = renderTaskFile }
  53. t.config
  54. )
  55. )
  56. let renderBasicAsRenderedBasic
  57. : Types.BasicStep → RenderTypes.BasicStep
  58. = λ(b : Types.BasicStep)
  59. → merge { Get = renderGet, Put = renderPut, Task = renderTask } b
  60. let renderAggregate
  61. : List Types.BasicStep → RenderTypes.Step
  62. = λ(bs : List Types.BasicStep)
  63. → RenderTypes.Step.Aggregate
  64. { aggregate =
  65. Prelude.`List`.map
  66. Types.BasicStep
  67. RenderTypes.BasicStep
  68. renderBasicAsRenderedBasic
  69. bs
  70. }
  71. let renderBasic
  72. : Types.BasicStep → RenderTypes.Step
  73. = λ(b : Types.BasicStep)
  74. → RenderTypes.Step.Basic (renderBasicAsRenderedBasic b)
  75. let renderStep =
  76. λ(s : Types.Step)
  77. → merge { Basic = renderBasic, Aggregate = renderAggregate } s
  78. in renderStep