{-# LANGUAGE DeriveGeneric #-}

module HaskellWorks.Polysemy.Hedgehog.Workspace.Types
  ( PackagePath(..),
    ProjectRoot(..),
    Workspace(..),
  ) where

import           GHC.Generics
import           HaskellWorks.Polysemy.Prelude

newtype Workspace = Workspace
  { Workspace -> FilePath
filePath :: FilePath
  }
  deriving (Workspace -> Workspace -> Bool
(Workspace -> Workspace -> Bool)
-> (Workspace -> Workspace -> Bool) -> Eq Workspace
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Workspace -> Workspace -> Bool
== :: Workspace -> Workspace -> Bool
$c/= :: Workspace -> Workspace -> Bool
/= :: Workspace -> Workspace -> Bool
Eq, Int -> Workspace -> ShowS
[Workspace] -> ShowS
Workspace -> FilePath
(Int -> Workspace -> ShowS)
-> (Workspace -> FilePath)
-> ([Workspace] -> ShowS)
-> Show Workspace
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Workspace -> ShowS
showsPrec :: Int -> Workspace -> ShowS
$cshow :: Workspace -> FilePath
show :: Workspace -> FilePath
$cshowList :: [Workspace] -> ShowS
showList :: [Workspace] -> ShowS
Show, (forall x. Workspace -> Rep Workspace x)
-> (forall x. Rep Workspace x -> Workspace) -> Generic Workspace
forall x. Rep Workspace x -> Workspace
forall x. Workspace -> Rep Workspace x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Workspace -> Rep Workspace x
from :: forall x. Workspace -> Rep Workspace x
$cto :: forall x. Rep Workspace x -> Workspace
to :: forall x. Rep Workspace x -> Workspace
Generic)

newtype ProjectRoot = ProjectRoot
  { ProjectRoot -> FilePath
filePath :: FilePath
  }
  deriving (ProjectRoot -> ProjectRoot -> Bool
(ProjectRoot -> ProjectRoot -> Bool)
-> (ProjectRoot -> ProjectRoot -> Bool) -> Eq ProjectRoot
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProjectRoot -> ProjectRoot -> Bool
== :: ProjectRoot -> ProjectRoot -> Bool
$c/= :: ProjectRoot -> ProjectRoot -> Bool
/= :: ProjectRoot -> ProjectRoot -> Bool
Eq, Int -> ProjectRoot -> ShowS
[ProjectRoot] -> ShowS
ProjectRoot -> FilePath
(Int -> ProjectRoot -> ShowS)
-> (ProjectRoot -> FilePath)
-> ([ProjectRoot] -> ShowS)
-> Show ProjectRoot
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProjectRoot -> ShowS
showsPrec :: Int -> ProjectRoot -> ShowS
$cshow :: ProjectRoot -> FilePath
show :: ProjectRoot -> FilePath
$cshowList :: [ProjectRoot] -> ShowS
showList :: [ProjectRoot] -> ShowS
Show)

newtype PackagePath = PackagePath
  { PackagePath -> FilePath
filePath :: FilePath
  }
  deriving (PackagePath -> PackagePath -> Bool
(PackagePath -> PackagePath -> Bool)
-> (PackagePath -> PackagePath -> Bool) -> Eq PackagePath
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PackagePath -> PackagePath -> Bool
== :: PackagePath -> PackagePath -> Bool
$c/= :: PackagePath -> PackagePath -> Bool
/= :: PackagePath -> PackagePath -> Bool
Eq, Int -> PackagePath -> ShowS
[PackagePath] -> ShowS
PackagePath -> FilePath
(Int -> PackagePath -> ShowS)
-> (PackagePath -> FilePath)
-> ([PackagePath] -> ShowS)
-> Show PackagePath
forall a.
(Int -> a -> ShowS) -> (a -> FilePath) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PackagePath -> ShowS
showsPrec :: Int -> PackagePath -> ShowS
$cshow :: PackagePath -> FilePath
show :: PackagePath -> FilePath
$cshowList :: [PackagePath] -> ShowS
showList :: [PackagePath] -> ShowS
Show)