{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Amplify.Types.Stage
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Amplify.Types.Stage
  ( Stage
      ( ..,
        Stage_BETA,
        Stage_DEVELOPMENT,
        Stage_EXPERIMENTAL,
        Stage_PRODUCTION,
        Stage_PULL_REQUEST
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype Stage = Stage' {Stage -> Text
fromStage :: Core.Text}
  deriving stock
    ( Int -> Stage -> ShowS
[Stage] -> ShowS
Stage -> String
(Int -> Stage -> ShowS)
-> (Stage -> String) -> ([Stage] -> ShowS) -> Show Stage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Stage] -> ShowS
$cshowList :: [Stage] -> ShowS
show :: Stage -> String
$cshow :: Stage -> String
showsPrec :: Int -> Stage -> ShowS
$cshowsPrec :: Int -> Stage -> ShowS
Prelude.Show,
      ReadPrec [Stage]
ReadPrec Stage
Int -> ReadS Stage
ReadS [Stage]
(Int -> ReadS Stage)
-> ReadS [Stage]
-> ReadPrec Stage
-> ReadPrec [Stage]
-> Read Stage
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Stage]
$creadListPrec :: ReadPrec [Stage]
readPrec :: ReadPrec Stage
$creadPrec :: ReadPrec Stage
readList :: ReadS [Stage]
$creadList :: ReadS [Stage]
readsPrec :: Int -> ReadS Stage
$creadsPrec :: Int -> ReadS Stage
Prelude.Read,
      Stage -> Stage -> Bool
(Stage -> Stage -> Bool) -> (Stage -> Stage -> Bool) -> Eq Stage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Stage -> Stage -> Bool
$c/= :: Stage -> Stage -> Bool
== :: Stage -> Stage -> Bool
$c== :: Stage -> Stage -> Bool
Prelude.Eq,
      Eq Stage
Eq Stage
-> (Stage -> Stage -> Ordering)
-> (Stage -> Stage -> Bool)
-> (Stage -> Stage -> Bool)
-> (Stage -> Stage -> Bool)
-> (Stage -> Stage -> Bool)
-> (Stage -> Stage -> Stage)
-> (Stage -> Stage -> Stage)
-> Ord Stage
Stage -> Stage -> Bool
Stage -> Stage -> Ordering
Stage -> Stage -> Stage
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Stage -> Stage -> Stage
$cmin :: Stage -> Stage -> Stage
max :: Stage -> Stage -> Stage
$cmax :: Stage -> Stage -> Stage
>= :: Stage -> Stage -> Bool
$c>= :: Stage -> Stage -> Bool
> :: Stage -> Stage -> Bool
$c> :: Stage -> Stage -> Bool
<= :: Stage -> Stage -> Bool
$c<= :: Stage -> Stage -> Bool
< :: Stage -> Stage -> Bool
$c< :: Stage -> Stage -> Bool
compare :: Stage -> Stage -> Ordering
$ccompare :: Stage -> Stage -> Ordering
$cp1Ord :: Eq Stage
Prelude.Ord,
      (forall x. Stage -> Rep Stage x)
-> (forall x. Rep Stage x -> Stage) -> Generic Stage
forall x. Rep Stage x -> Stage
forall x. Stage -> Rep Stage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Stage x -> Stage
$cfrom :: forall x. Stage -> Rep Stage x
Prelude.Generic
    )
  deriving newtype
    ( Int -> Stage -> Int
Stage -> Int
(Int -> Stage -> Int) -> (Stage -> Int) -> Hashable Stage
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: Stage -> Int
$chash :: Stage -> Int
hashWithSalt :: Int -> Stage -> Int
$chashWithSalt :: Int -> Stage -> Int
Prelude.Hashable,
      Stage -> ()
(Stage -> ()) -> NFData Stage
forall a. (a -> ()) -> NFData a
rnf :: Stage -> ()
$crnf :: Stage -> ()
Prelude.NFData,
      Text -> Either String Stage
(Text -> Either String Stage) -> FromText Stage
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String Stage
$cfromText :: Text -> Either String Stage
Core.FromText,
      Stage -> Text
(Stage -> Text) -> ToText Stage
forall a. (a -> Text) -> ToText a
toText :: Stage -> Text
$ctoText :: Stage -> Text
Core.ToText,
      Stage -> ByteString
(Stage -> ByteString) -> ToByteString Stage
forall a. (a -> ByteString) -> ToByteString a
toBS :: Stage -> ByteString
$ctoBS :: Stage -> ByteString
Core.ToByteString,
      Stage -> ByteStringBuilder
(Stage -> ByteStringBuilder) -> ToLog Stage
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: Stage -> ByteStringBuilder
$cbuild :: Stage -> ByteStringBuilder
Core.ToLog,
      HeaderName -> Stage -> [Header]
(HeaderName -> Stage -> [Header]) -> ToHeader Stage
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> Stage -> [Header]
$ctoHeader :: HeaderName -> Stage -> [Header]
Core.ToHeader,
      Stage -> QueryString
(Stage -> QueryString) -> ToQuery Stage
forall a. (a -> QueryString) -> ToQuery a
toQuery :: Stage -> QueryString
$ctoQuery :: Stage -> QueryString
Core.ToQuery,
      Value -> Parser [Stage]
Value -> Parser Stage
(Value -> Parser Stage)
-> (Value -> Parser [Stage]) -> FromJSON Stage
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Stage]
$cparseJSONList :: Value -> Parser [Stage]
parseJSON :: Value -> Parser Stage
$cparseJSON :: Value -> Parser Stage
Core.FromJSON,
      FromJSONKeyFunction [Stage]
FromJSONKeyFunction Stage
FromJSONKeyFunction Stage
-> FromJSONKeyFunction [Stage] -> FromJSONKey Stage
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [Stage]
$cfromJSONKeyList :: FromJSONKeyFunction [Stage]
fromJSONKey :: FromJSONKeyFunction Stage
$cfromJSONKey :: FromJSONKeyFunction Stage
Core.FromJSONKey,
      [Stage] -> Encoding
[Stage] -> Value
Stage -> Encoding
Stage -> Value
(Stage -> Value)
-> (Stage -> Encoding)
-> ([Stage] -> Value)
-> ([Stage] -> Encoding)
-> ToJSON Stage
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Stage] -> Encoding
$ctoEncodingList :: [Stage] -> Encoding
toJSONList :: [Stage] -> Value
$ctoJSONList :: [Stage] -> Value
toEncoding :: Stage -> Encoding
$ctoEncoding :: Stage -> Encoding
toJSON :: Stage -> Value
$ctoJSON :: Stage -> Value
Core.ToJSON,
      ToJSONKeyFunction [Stage]
ToJSONKeyFunction Stage
ToJSONKeyFunction Stage
-> ToJSONKeyFunction [Stage] -> ToJSONKey Stage
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [Stage]
$ctoJSONKeyList :: ToJSONKeyFunction [Stage]
toJSONKey :: ToJSONKeyFunction Stage
$ctoJSONKey :: ToJSONKeyFunction Stage
Core.ToJSONKey,
      [Node] -> Either String Stage
([Node] -> Either String Stage) -> FromXML Stage
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String Stage
$cparseXML :: [Node] -> Either String Stage
Core.FromXML,
      Stage -> XML
(Stage -> XML) -> ToXML Stage
forall a. (a -> XML) -> ToXML a
toXML :: Stage -> XML
$ctoXML :: Stage -> XML
Core.ToXML
    )

pattern Stage_BETA :: Stage
pattern $bStage_BETA :: Stage
$mStage_BETA :: forall r. Stage -> (Void# -> r) -> (Void# -> r) -> r
Stage_BETA = Stage' "BETA"

pattern Stage_DEVELOPMENT :: Stage
pattern $bStage_DEVELOPMENT :: Stage
$mStage_DEVELOPMENT :: forall r. Stage -> (Void# -> r) -> (Void# -> r) -> r
Stage_DEVELOPMENT = Stage' "DEVELOPMENT"

pattern Stage_EXPERIMENTAL :: Stage
pattern $bStage_EXPERIMENTAL :: Stage
$mStage_EXPERIMENTAL :: forall r. Stage -> (Void# -> r) -> (Void# -> r) -> r
Stage_EXPERIMENTAL = Stage' "EXPERIMENTAL"

pattern Stage_PRODUCTION :: Stage
pattern $bStage_PRODUCTION :: Stage
$mStage_PRODUCTION :: forall r. Stage -> (Void# -> r) -> (Void# -> r) -> r
Stage_PRODUCTION = Stage' "PRODUCTION"

pattern Stage_PULL_REQUEST :: Stage
pattern $bStage_PULL_REQUEST :: Stage
$mStage_PULL_REQUEST :: forall r. Stage -> (Void# -> r) -> (Void# -> r) -> r
Stage_PULL_REQUEST = Stage' "PULL_REQUEST"

{-# COMPLETE
  Stage_BETA,
  Stage_DEVELOPMENT,
  Stage_EXPERIMENTAL,
  Stage_PRODUCTION,
  Stage_PULL_REQUEST,
  Stage'
  #-}