cabal-cargs-0.1.1: lib/CabalCargs/Sections.hs
{-# LANGUAGE PatternGuards #-}
module CabalCargs.Sections
( Sections(..)
, Section(..)
, sections
) where
import CabalCargs.Args (Args)
import qualified CabalCargs.Args as A
-- | A section of the cabal file.
data Section = Library
| Executable String
| TestSuite String
| Benchmark String
deriving (Show, Eq)
-- | From which sections the compiler args should be collected.
data Sections = AllSections -- ^ all sections are considered
| Sections [Section] -- ^ only these sections are considered
deriving (Show, Eq)
-- | Convert the command line arguments into 'Sections'.
sections :: Args -> Sections
sections args
| ss@(_:_) <- concat [ [Library | A.library args]
, map Executable (A.executable args)
, map TestSuite (A.testSuite args)
, map Benchmark (A.benchmark args)
]
= Sections ss
| otherwise
= AllSections