stack-2.13.1: src/Stack/Types/GhcOptionKey.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
module Stack.Types.GhcOptionKey
( GhcOptionKey (..)
) where
import Data.Aeson.Types ( FromJSONKey (..), FromJSONKeyFunction (..) )
import qualified Data.Text as T
import Stack.Prelude
data GhcOptionKey
= GOKOldEverything
| GOKEverything
| GOKLocals
| GOKTargets
| GOKPackage !PackageName
deriving (Eq, Ord)
instance FromJSONKey GhcOptionKey where
fromJSONKey = FromJSONKeyTextParser $ \t ->
case t of
"*" -> pure GOKOldEverything
"$everything" -> pure GOKEverything
"$locals" -> pure GOKLocals
"$targets" -> pure GOKTargets
_ ->
case parsePackageName $ T.unpack t of
Nothing -> fail $ "Invalid package name: " ++ show t
Just x -> pure $ GOKPackage x
fromJSONKeyList =
FromJSONKeyTextParser $ \_ -> fail "GhcOptionKey.fromJSONKeyList"