packages feed

hercules-ci-agent-0.9.0: src/Hercules/Agent/NixPath.hs

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 = T.intercalate ":" . map renderNixPathElement

renderNixPathElement ::
  EvaluateTask.NixPathElement
    (EvaluateTask.SubPathOf FilePath) ->
  Text
renderNixPathElement pe =
  foldMap (<> "=") (EvaluateTask.prefix pe)
    <> renderSubPath (toS <$> EvaluateTask.value pe)

renderSubPath :: EvaluateTask.SubPathOf Text -> Text
renderSubPath sp =
  toS (EvaluateTask.path sp) <> foldMap ("/" <>) (EvaluateTask.subPath sp)