{-# LANGUAGE PatternGuards #-}

module CabalCargs.Fields
   ( Fields(..)
   , fields
   ) where

import CabalCargs.Args (Args)
import qualified CabalCargs.Args as Args
import qualified CabalCargs.Field as F


-- | Which fields should be considered for the print out.
data Fields = AllFields        -- ^ all fields are printed out
            | Fields [F.Field] -- ^ only these fields are printed out
            deriving (Show, Eq)


-- | Convert the command line arguments into 'Fields'.
fields :: Args -> Fields
fields args
   | fs@(_:_) <- Args.only args
   = Fields fs

   | otherwise
   = AllFields