packages feed

hnix-store-core-0.4.2.0: src/System/Nix/Derivation.hs

{-# LANGUAGE OverloadedStrings #-}

module System.Nix.Derivation
  ( parseDerivation
  , buildDerivation
  )
where

import           Data.Text                      ( Text )
import qualified Data.Text                     as Text
import qualified Data.Text.Lazy.Builder        as Text.Lazy
                                                ( Builder )
import qualified Data.Text.Lazy.Builder        as Text.Lazy.Builder
import qualified Data.Attoparsec.Text.Lazy     as Text.Lazy
                                                ( Parser )
import           Nix.Derivation                 ( Derivation )
import qualified Nix.Derivation                as Derivation
import           System.Nix.StorePath           ( StorePath )
import qualified System.Nix.StorePath          as StorePath



parseDerivation :: FilePath -> Text.Lazy.Parser (Derivation StorePath Text)
parseDerivation expectedRoot =
  Derivation.parseDerivationWith
    ("\"" *> StorePath.pathParser expectedRoot <* "\"")
    Derivation.textParser

buildDerivation :: Derivation StorePath Text -> Text.Lazy.Builder
buildDerivation =
  Derivation.buildDerivationWith
    (string . Text.pack . show)
    string
  where
    string = Text.Lazy.Builder.fromText . Text.pack . show