{-# LANGUAGE TemplateHaskell #-} module Types where import qualified Data.Text as T import qualified Lens.Family.TH as Lens data ProjectDetails = ProjectDetails { _projectName :: T.Text , _projectAuthor :: T.Text , _projectEmail :: T.Text , _projectYear :: T.Text , _projectCategory :: Maybe T.Text , _projectSynopsis :: Maybe T.Text , _projectDescription :: Maybe T.Text , _projectLicense :: Maybe T.Text } data LibraryDetails = LibraryDetails { _libMods :: [T.Text] , _libDeps :: [T.Text] } data ExecutableDetails = ExecutableDetails { _execName :: T.Text , _execDir :: T.Text , _execDeps :: [T.Text] } data TestDetails = TestDetails { _testName :: T.Text , _testDir :: T.Text , _testDeps :: [T.Text] } data Project = Project { _projectDetails :: ProjectDetails , _libDetails :: Maybe LibraryDetails , _binDetails :: [ExecutableDetails] , _projectRoot :: Maybe T.Text } Lens.makeLenses ''ProjectDetails Lens.makeLenses ''LibraryDetails Lens.makeLenses ''ExecutableDetails Lens.makeLenses ''TestDetails Lens.makeLenses ''Project