{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -Wno-missing-signatures #-}

module Types
( Compiler(..)
, compilerVersion
, Config(..)
, configInstallPath
, configCurrentCompiler
, compilerString
) where

import qualified Lens.Family.TH as Lens

data Compiler = Compiler
  { _compilerVersion :: (Int, Int, Int)
  } deriving (Eq, Show)

data Config = Config
  { _configInstallPath     :: FilePath
  , _configCurrentCompiler :: Maybe Compiler
  } deriving (Eq, Show)

Lens.makeLenses ''Compiler
Lens.makeLenses ''Config

compilerString :: Compiler -> String
compilerString (Compiler (x, y, z)) =
  "ghc-" ++ show x ++ "." ++ show y ++ "." ++ show z
