packages feed

hannahci-0.1.4.0: Data/Info.hs

{-# LANGUAGE DeriveGeneric #-}

{-|
Module       : Data.Info
Description  : Types and variables used throughout the project
Copyright    : (c) Philip Woods 2015
License      : AGPL-3
Maintainer   : elzairthesorcerer@gmail.com
Stability    : experimental
Portabiltity : Linux
-}

module Data.Info (
  ProjectInfo(..),
  HostInfo(..),
  LogInfo(..),
  pathRoot,
  tPathRoot,
  confPath
) where

import Data.Aeson   (FromJSON(..), ToJSON(..))
import Data.Text    (Text, pack)
import GHC.Generics (Generic)

-- | Information on given project
data ProjectInfo = ProjectInfo {   
  provider    :: Text,             -- ^ Provider name (i.e. bitbucket)
  repository  :: Text,             -- ^ Repository name
  branch      :: Text,             -- ^ Branch name
  preCommands :: Maybe [Text],     -- ^ List of commands to execute before building container
  hostInfo    :: Maybe [HostInfo]  -- ^ List of host-specific configuration
} deriving (Show, Generic)

instance FromJSON ProjectInfo
instance ToJSON   ProjectInfo

-- Two 'ProjectInfo' variables are equivalent if they have the
-- same provider, repository, and branch name.
instance Eq ProjectInfo where
  (ProjectInfo p1 r1 b1 _ _) == (ProjectInfo p2 r2 b2 _ _) =
    p1 == p2 && r1 == r2 && b1 == b2
 
-- | Information on application host
data HostInfo = HostInfo {
  hostName   :: Text,              -- ^ Name of application host
  runOptions :: Maybe Text         -- ^ Options to pass to Docker
} deriving (Show, Generic)

instance FromJSON HostInfo
instance ToJSON   HostInfo

-- | Contents and metadata of log file
data LogInfo = LogInfo {
  provider_info   :: Text,         -- ^ Provider name
  repository_info :: Text,         -- ^ Repository name
  branch_info     :: Text,         -- ^ Branch name
  log_info        :: Text          -- ^ Contents of latest log file
} deriving (Show, Generic)

instance FromJSON LogInfo
instance ToJSON   LogInfo

-- | Path to directory where data is stored
pathRoot :: String
pathRoot = "/home/hannahci/"

-- | The 'Text' version of 'pathRoot'
tPathRoot :: Text
tPathRoot = pack "/home/hannahci/"

-- | The path to the config file
confPath :: String
confPath = "/etc/hannahci.yaml"