{-# LANGUAGE TemplateHaskell #-} module Horizon.Spec.Types.Subdir (Subdir(MkSubdir), fromSubdir, mkSubdir) where import Data.Kind (Type) import Dhall (FromDhall, ToDhall) import Language.Haskell.TH (Exp, Q) import Language.Haskell.TH.Lift (deriveLift, lift) import Path (Dir, Path, Rel, parseRelDir) import Path.Dhall () type Subdir :: Type newtype Subdir = MkSubdir { fromSubdir :: Path Rel Dir } deriving stock (Eq, Show) deriving newtype (FromDhall, ToDhall) $(deriveLift 'MkSubdir) mkSubdir :: FilePath -> Q Exp mkSubdir = either (error . show) (lift . MkSubdir) . parseRelDir