module Buffet.Assemble.BeforeFirstBuildStage
  ( get
  ) where

import qualified Buffet.Assemble.ScheduleParallelInstructions as ScheduleParallelInstructions
import qualified Buffet.Ir.Ir as Ir
import qualified Data.Map.Strict as Map
import Prelude ((.), fmap)

get :: Ir.Buffet -> [Ir.DockerfilePart]
get :: Buffet -> [DockerfilePart]
get = [DockerfilePart] -> [DockerfilePart]
ScheduleParallelInstructions.get ([DockerfilePart] -> [DockerfilePart])
-> (Buffet -> [DockerfilePart]) -> Buffet -> [DockerfilePart]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Buffet -> [DockerfilePart]
dishesInstructions

dishesInstructions :: Ir.Buffet -> [Ir.DockerfilePart]
dishesInstructions :: Buffet -> [DockerfilePart]
dishesInstructions = (Dish -> DockerfilePart) -> [Dish] -> [DockerfilePart]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Dish -> DockerfilePart
Ir.beforeFirstBuildStage ([Dish] -> [DockerfilePart])
-> (Buffet -> [Dish]) -> Buffet -> [DockerfilePart]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map Option Dish -> [Dish]
forall k a. Map k a -> [a]
Map.elems (Map Option Dish -> [Dish])
-> (Buffet -> Map Option Dish) -> Buffet -> [Dish]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Buffet -> Map Option Dish
Ir.optionToDish