resourcesFromJobs.dhall 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. let Prelude = ../lib/prelude.dhall
  2. let Types = ../types/package.dhall
  3. let Resource = Types.Resource
  4. let StepHooks = Types.StepHooks
  5. let catOptionals = ../utils/catOptionals.dhall
  6. let resourcesFromStepHooks
  7. : StepHooks (List Resource) → List Resource
  8. = λ(h : StepHooks (List Resource)) →
  9. let listOfListOfResources =
  10. catOptionals
  11. (List Resource)
  12. [ h.ensure, h.on_success, h.on_failure, h.on_abort ]
  13. in Prelude.List.concat Resource listOfListOfResources
  14. let resourcesFromGetStep
  15. : Types.GetStep → StepHooks (List Resource) → List Resource
  16. = λ(g : Types.GetStep) →
  17. λ(h : StepHooks (List Resource)) →
  18. [ g.resource ] # resourcesFromStepHooks h
  19. let resourcesFromPutStep
  20. : Types.PutStep → StepHooks (List Resource) → List Resource
  21. = λ(p : Types.PutStep) →
  22. λ(h : StepHooks (List Resource)) →
  23. [ p.resource ] # resourcesFromStepHooks h
  24. let resourcesFromHooksOnly
  25. : ∀(T : Type) → T → StepHooks (List Resource) → List Resource
  26. = λ(T : Type) →
  27. λ(_ : T) →
  28. λ(h : StepHooks (List Resource)) →
  29. resourcesFromStepHooks h
  30. let resourcesFromAggregateOrDo
  31. : List (List Resource) → StepHooks (List Resource) → List Resource
  32. = λ(rs : List (List Resource)) →
  33. λ(h : StepHooks (List Resource)) →
  34. Prelude.List.concat Resource rs # resourcesFromStepHooks h
  35. let resourcesFromInParallelSteps =
  36. λ(rs : List (List Resource)) → Prelude.List.concat Resource rs
  37. let resourcesFromInParallelConfig =
  38. λ(config : Types.InParallelConfig (List Resource)) →
  39. Prelude.List.concat Resource config.steps
  40. let resourcesFromInParallel
  41. : Types.InParallelStep (List Resource) →
  42. StepHooks (List Resource) →
  43. List Resource
  44. = λ(step : Types.InParallelStep (List Resource)) →
  45. λ(h : StepHooks (List Resource)) →
  46. merge
  47. { Steps = resourcesFromInParallelSteps
  48. , Config = resourcesFromInParallelConfig
  49. }
  50. step
  51. # resourcesFromStepHooks h
  52. let resourcesFromTry
  53. : List Resource → StepHooks (List Resource) → List Resource
  54. = λ(rs : List Resource) →
  55. λ(h : StepHooks (List Resource)) →
  56. rs # resourcesFromStepHooks h
  57. let resourcesFromStep =
  58. λ(s : Types.Step) →
  59. s
  60. (List Resource)
  61. { get = resourcesFromGetStep
  62. , put = resourcesFromPutStep
  63. , task = resourcesFromHooksOnly Types.TaskStep
  64. , set_pipeline = resourcesFromHooksOnly Types.SetPipelineStep
  65. , load_var = resourcesFromHooksOnly Types.LoadVarStep
  66. , aggregate = resourcesFromAggregateOrDo
  67. , do = resourcesFromAggregateOrDo
  68. , try = resourcesFromTry
  69. , in_parallel = resourcesFromInParallel
  70. }
  71. let resourcesFromJob =
  72. λ(j : Types.Job) →
  73. let hookSteps =
  74. catOptionals
  75. Types.Step
  76. [ j.on_abort, j.on_failure, j.on_success, j.ensure ]
  77. in Prelude.List.concatMap
  78. Types.Step
  79. Resource
  80. resourcesFromStep
  81. (j.plan # hookSteps)
  82. in Prelude.List.concatMap Types.Job Resource resourcesFromJob
  83. : List Types.Job → List Resource