module Hercules.Agent.NixPath ( renderNixPath, renderNixPathElement, renderSubPath, ) where import qualified Data.Text as T import qualified Hercules.API.Agent.Evaluate.EvaluateTask as EvaluateTask import Protolude renderNixPath :: [EvaluateTask.NixPathElement (EvaluateTask.SubPathOf FilePath)] -> Text renderNixPath :: [NixPathElement (SubPathOf FilePath)] -> Text renderNixPath = Text -> [Text] -> Text T.intercalate Text ":" forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b map NixPathElement (SubPathOf FilePath) -> Text renderNixPathElement renderNixPathElement :: EvaluateTask.NixPathElement (EvaluateTask.SubPathOf FilePath) -> Text renderNixPathElement :: NixPathElement (SubPathOf FilePath) -> Text renderNixPathElement NixPathElement (SubPathOf FilePath) pe = forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (forall a. Semigroup a => a -> a -> a <> Text "=") (forall a. NixPathElement a -> Maybe Text EvaluateTask.prefix NixPathElement (SubPathOf FilePath) pe) forall a. Semigroup a => a -> a -> a <> SubPathOf Text -> Text renderSubPath (forall a b. ConvertText a b => a -> b toS forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. NixPathElement a -> a EvaluateTask.value NixPathElement (SubPathOf FilePath) pe) renderSubPath :: EvaluateTask.SubPathOf Text -> Text renderSubPath :: SubPathOf Text -> Text renderSubPath SubPathOf Text sp = forall a b. ConvertText a b => a -> b toS (forall a. SubPathOf a -> a EvaluateTask.path SubPathOf Text sp) forall a. Semigroup a => a -> a -> a <> forall (t :: * -> *) m a. (Foldable t, Monoid m) => (a -> m) -> t a -> m foldMap (Text "/" forall a. Semigroup a => a -> a -> a <>) (forall a. SubPathOf a -> Maybe Text EvaluateTask.subPath SubPathOf Text sp)