module Rollbar.Item.CodeVersion
( CodeVersion(..)
) where
import Data.Aeson (ToJSON, toEncoding, toJSON)
import GHC.Generics (Generic)
import qualified Data.Text as T
data CodeVersion
= SemVer T.Text
| Number Int
| SHA T.Text
deriving (Eq, Generic, Show)
prettyCodeVersion :: CodeVersion -> T.Text
prettyCodeVersion (SemVer s) = s
prettyCodeVersion (Number n) = T.pack . show $ n
prettyCodeVersion (SHA h) = h
instance ToJSON CodeVersion where
toJSON = toJSON . prettyCodeVersion
toEncoding = toEncoding . prettyCodeVersion