{-# LANGUAGE TemplateHaskell #-} module Horizon.Spec.Types.PackageSetFile (PackageSetFile(MkPackageSetFile), fromPackageSetFile, mkPackageSetFile) where import Data.Kind (Type) import Dhall (FromDhall, ToDhall) import Language.Haskell.TH (Exp, Q) import Language.Haskell.TH.Lift (deriveLift, lift) import Path (File, Path, Rel, parseRelFile) import Path.Dhall () type PackageSetFile :: Type newtype PackageSetFile = MkPackageSetFile { fromPackageSetFile :: Path Rel File } deriving stock (Eq, Show) deriving newtype (FromDhall, ToDhall) $(deriveLift 'MkPackageSetFile) mkPackageSetFile :: FilePath -> Q Exp mkPackageSetFile = either (error . show) (lift . MkPackageSetFile) . parseRelFile