on master help sign in
Removes TH in favor of Generics
5840c84Deni Bertovic
Network/Docker/Types.hs+11−19
@@ -1,26 +1,25 @@
1{-# LANGUAGE DataKinds #-}
1{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE DeriveFunctor #-}
2{-# LANGUAGE DeriveFunctor #-}
3+{-# LANGUAGE DeriveGeneric #-}
3{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE GADTs #-}
5{-# LANGUAGE GADTs #-}
5{-# LANGUAGE OverloadedStrings #-}
6{-# LANGUAGE OverloadedStrings #-}
6{-# LANGUAGE RecordWildCards #-}
7{-# LANGUAGE RecordWildCards #-}
7−{-# LANGUAGE TemplateHaskell #-}
8{-# LANGUAGE TypeFamilies #-}
8{-# LANGUAGE TypeFamilies #-}
9
9
10module Network.Docker.Types where
10module Network.Docker.Types where
11
11
12import Control.Applicative
12import Control.Applicative
13−import Control.Lens.TH
14import Control.Monad.Free
13import Control.Monad.Free
15import Data.Aeson
14import Data.Aeson
16−import Data.Aeson.TH
15+import Data.Aeson.Types
17import Data.Bool
16import Data.Bool
18import qualified Data.ByteString.Lazy as BS
17import qualified Data.ByteString.Lazy as BS
19import qualified Data.ByteString.Lazy as L
18import qualified Data.ByteString.Lazy as L
20import Data.Default
19import Data.Default
21import qualified Data.Map as Map
20import qualified Data.Map as Map
22import qualified Data.Text as T
21import qualified Data.Text as T
23−import GHC.Generics
22+import GHC.Generics (Generic)
24import Network.Docker.Options
23import Network.Docker.Options
25import Network.Wreq.Types (Postable)
24import Network.Wreq.Types (Postable)
26import OpenSSL.Session (SSLContext)
25import OpenSSL.Session (SSLContext)
@@ -107,7 +106,7 @@ data DockerVersion = DockerVersion
107 , _GoVersion :: String
106 , _GoVersion :: String
108 , _Arch :: String
107 , _Arch :: String
109 , _KernelVersion :: String
108 , _KernelVersion :: String
110− } deriving (Show, Eq)
109+ } deriving (Show, Eq, Generic)
111
110
112
111
113-- The JSON looks likes this:
112-- The JSON looks likes this:
@@ -258,16 +257,6 @@ instance ToJSON RestartPolicy where
258 toJSON RestartAlways = object ["Name" .= ("always"::String), "MaximumRetryCount" .= (0::Int) ]
257 toJSON RestartAlways = object ["Name" .= ("always"::String), "MaximumRetryCount" .= (0::Int) ]
259 toJSON (RestartOnFailure n) = object ["Name" .= ("on-failure"::String), "MaximumRetryCount" .= n ]
258 toJSON (RestartOnFailure n) = object ["Name" .= ("on-failure"::String), "MaximumRetryCount" .= n ]
260
259
261−makeClassy ''ResourceId
262−
263−-- makeLenses ''CreateContainerResponse
264−makeLenses ''DockerImage
265−makeLenses ''DockerContainer
266−makeLenses ''CreateContainerOpts
267−
268−instance HasResourceId DockerImage where
269− resourceId = imageId
270−
271instance FromJSON DockerImage where
260instance FromJSON DockerImage where
272 parseJSON (Object v) =
261 parseJSON (Object v) =
273 DockerImage <$> ResourceId <$> (v .: "Id")
262 DockerImage <$> ResourceId <$> (v .: "Id")
@@ -284,9 +273,6 @@ instance FromJSON PortMap where
284 <*> (v .: "PublicPort")
273 <*> (v .: "PublicPort")
285 <*> (v .: "Type")
274 <*> (v .: "Type")
286
275
287−instance HasResourceId DockerContainer where
288− resourceId = containerId
289−
290instance FromJSON DockerContainer where
276instance FromJSON DockerContainer where
291 parseJSON (Object v) =
277 parseJSON (Object v) =
292 DockerContainer <$> (ResourceId <$> (v .: "Id"))
278 DockerContainer <$> (ResourceId <$> (v .: "Id"))
@@ -302,5 +288,11 @@ instance FromJSON DockerContainer where
302-- CreateContainerResponse <$> (v .: "Id")
288-- CreateContainerResponse <$> (v .: "Id")
303-- <*> (v .:? "warnings")
289-- <*> (v .:? "warnings")
304
290
291+instance ToJSON DockerVersion where
292+ toJSON = genericToJSON defaultOptions {
293+ fieldLabelModifier = drop 1 }
294+
305−$(deriveJSON dopts ''DockerVersion)
295+instance FromJSON DockerVersion where
296+ parseJSON = genericParseJSON defaultOptions {
297+ fieldLabelModifier = drop 1 }
306
298
docker.cabal+1−1
@@ -20,7 +20,7 @@ stability: experimental
20library
20library
21 exposed-modules: Network.Docker, Network.Docker.Options, Network.Docker.Types, Network.Docker.Utils
21 exposed-modules: Network.Docker, Network.Docker.Options, Network.Docker.Types, Network.Docker.Utils
22 -- other-modules:
22 -- other-modules:
23− other-extensions: OverloadedStrings, DeriveFunctor, FlexibleContexts, TemplateHaskell
23+ other-extensions: OverloadedStrings, DeriveFunctor, FlexibleContexts
24 build-depends: base >= 4.7 && < 4.9
24 build-depends: base >= 4.7 && < 4.9
25 , lens >= 4.2
25 , lens >= 4.2
26 , aeson >= 0.7
26 , aeson >= 0.7