packages feed

dhall-fly-0.1.0: dhall-concourse/helpers/inParallelStep.dhall

let Types = ../types/package.dhall

let Defaults = ../defaults/package.dhall

let Prelude = ../lib/prelude.dhall

let typeFixSteps
    : ∀(T : Type) → Types.StepConstructors T → List Types.Step → List T
    =   λ(T : Type)
      → λ(constructors : Types.StepConstructors T)
      → Prelude.List.map Types.Step T (λ(s : Types.Step) → s T constructors)

let typeFix
    :   ∀(T : Type)
      → Types.StepConstructors T
      → Types.InParallelStep Types.Step
      → Types.InParallelStep T
    =   λ(T : Type)
      → λ(constructors : Types.StepConstructors T)
      → λ(parallel : Types.InParallelStep Types.Step)
      → merge
          { Steps =
                λ(s : List Types.Step)
              → (Types.InParallelStep T).Steps (typeFixSteps T constructors s)
          , Config =
                λ(cfg : Types.InParallelConfig Types.Step)
              → (Types.InParallelStep T).Config
                  (cfg ⫽ { steps = typeFixSteps T constructors cfg.steps })
          }
          parallel

let inParallelStep
    : Types.InParallelStep Types.Step → Types.Step
    =   λ(parallelSteps : Types.InParallelStep Types.Step)
      → λ(Step : Type)
      → λ(constructors : Types.StepConstructors Step)
      → let stepTypeFix = typeFix Step constructors parallelSteps
        
        in  constructors.in_parallel stepTypeFix (Defaults.StepHooks Step)

in  inParallelStep