diff --git a/.gitignore b/.gitignore index afaa85d..6c91f2e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ cabal.sandbox.config dist .stack-work +# cabal 2.0 +.ghc.environment.* +dist-newstyle diff --git a/.travis.yml b/.travis.yml index 604273e..d507a7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,6 +34,18 @@ matrix: compiler: ": #GHC 8.0.1" addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}} + - env: BUILD=cabal CABALVER=2.0 GHCVER=8.2.2 + compiler: ": #GHC 8.2.2" + addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}} + + - env: BUILD=cabal CABALVER=2.2 GHCVER=8.4.4 + compiler: ": #GHC 8.4.4" + addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.4], sources: [hvr-ghc]}} + + - env: BUILD=cabal CABALVER=2.4 GHCVER=8.6.5 + compiler: ": #GHC 8.6.5" + addons: {apt: {packages: [cabal-install-2.4,ghc-8.6.5], sources: [hvr-ghc]}} + # NOTE(mroberts): I've borrowed this from Yesod's .travis.yml: # # https://github.com/yesodweb/yesod/blob/master/.travis.yml @@ -76,6 +88,14 @@ matrix: compiler: ": #stack 8.2.2" addons: {apt: {packages: [libgmp-dev]}} + - env: BUILD=stack ARGS="--resolver lts-12" + compiler: ": #stack 8.4.4" + addons: {apt: {packages: [libgmp-dev]}} + + - env: BUILD=stack ARGS="--resolver lts-13" + compiler: ": #stack 8.6.5" + addons: {apt: {packages: [libgmp-dev]}} + before_install: - unset CC - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:$PATH diff --git a/cabal.project b/cabal.project new file mode 100644 index 0000000..0d7f076 --- /dev/null +++ b/cabal.project @@ -0,0 +1 @@ +packages: *.cabal diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..66e4b21 --- /dev/null +++ b/shell.nix @@ -0,0 +1,20 @@ +{ compiler ? "ghc865" }: + +let + nixpkgs = import {}; + inherit (nixpkgs) pkgs stdenv; +in +# Make a new "derivation" that represents our shell +stdenv.mkDerivation { + name = "twilio-haskell"; + + # The packages in the `buildInputs` list will be added to the PATH in our shell + buildInputs = [ + pkgs.cabal-install + pkgs.haskell.compiler.${compiler} + pkgs.xz + pkgs.zlib + ]; + + LIBRARY_PATH = "${pkgs.xz.out}/lib:${pkgs.zlib}/lib"; +} diff --git a/src/Twilio/APIKey.hs b/src/Twilio/APIKey.hs index 0d4c310..eed7c01 100644 --- a/src/Twilio/APIKey.hs +++ b/src/Twilio/APIKey.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE FlexibleInstances #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} @@ -20,7 +21,9 @@ module Twilio.APIKey import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock diff --git a/src/Twilio/Account.hs b/src/Twilio/Account.hs index b5c8c64..11712d8 100644 --- a/src/Twilio/Account.hs +++ b/src/Twilio/Account.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE FlexibleInstances #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} @@ -26,7 +27,9 @@ module Twilio.Account import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Address.hs b/src/Twilio/Address.hs index 1719ebe..0355211 100644 --- a/src/Twilio/Address.hs +++ b/src/Twilio/Address.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE FlexibleInstances #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} @@ -20,7 +21,9 @@ import Control.Error.Safe import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Control.Monad.Twilio diff --git a/src/Twilio/Application.hs b/src/Twilio/Application.hs index eed4e97..54a3e3c 100644 --- a/src/Twilio/Application.hs +++ b/src/Twilio/Application.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} ------------------------------------------------------------------------------- @@ -20,7 +21,9 @@ module Twilio.Application import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import qualified Data.Text as T import Data.Time.Clock diff --git a/src/Twilio/AuthorizedConnectApp.hs b/src/Twilio/AuthorizedConnectApp.hs index eb375b2..c39fe2c 100644 --- a/src/Twilio/AuthorizedConnectApp.hs +++ b/src/Twilio/AuthorizedConnectApp.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -19,7 +20,9 @@ module Twilio.AuthorizedConnectApp import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import qualified Data.Text as T import Data.Time.Clock diff --git a/src/Twilio/AvailablePhoneNumbers.hs b/src/Twilio/AvailablePhoneNumbers.hs index cf49a0f..6691c08 100644 --- a/src/Twilio/AvailablePhoneNumbers.hs +++ b/src/Twilio/AvailablePhoneNumbers.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -18,7 +19,9 @@ module Twilio.AvailablePhoneNumbers import Control.Applicative import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import qualified Data.Text as T import Control.Monad.Twilio diff --git a/src/Twilio/Call.hs b/src/Twilio/Call.hs index f49df9f..d5cb22e 100644 --- a/src/Twilio/Call.hs +++ b/src/Twilio/Call.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -24,7 +25,9 @@ import Control.Error.Safe import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Call/Feedback.hs b/src/Twilio/Call/Feedback.hs index 501b042..9bfb433 100644 --- a/src/Twilio/Call/Feedback.hs +++ b/src/Twilio/Call/Feedback.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -24,7 +25,9 @@ import Control.Monad import Control.Monad.Catch import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Scientific import Data.Time.Clock import GHC.Generics diff --git a/src/Twilio/Conference.hs b/src/Twilio/Conference.hs index dff9d91..2c23290 100644 --- a/src/Twilio/Conference.hs +++ b/src/Twilio/Conference.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -21,7 +22,9 @@ module Twilio.Conference import Control.Monad import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import GHC.Generics diff --git a/src/Twilio/Conference/Participant.hs b/src/Twilio/Conference/Participant.hs index 18b0f31..a7415cd 100644 --- a/src/Twilio/Conference/Participant.hs +++ b/src/Twilio/Conference/Participant.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -19,7 +20,9 @@ module Twilio.Conference.Participant import Control.Monad import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Time.Clock import GHC.Generics import Network.URI diff --git a/src/Twilio/Conference/Participants.hs b/src/Twilio/Conference/Participants.hs index 090e1ae..70842fb 100644 --- a/src/Twilio/Conference/Participants.hs +++ b/src/Twilio/Conference/Participants.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -20,7 +21,9 @@ import Control.Applicative import Data.Aeson import Data.Data import Data.Maybe +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import GHC.Generics import Twilio.Conference.Participant diff --git a/src/Twilio/ConnectApp.hs b/src/Twilio/ConnectApp.hs index ebe8119..04dbd59 100644 --- a/src/Twilio/ConnectApp.hs +++ b/src/Twilio/ConnectApp.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -19,7 +20,9 @@ module Twilio.ConnectApp import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import qualified Data.Text as T import Network.URI diff --git a/src/Twilio/IncomingPhoneNumber.hs b/src/Twilio/IncomingPhoneNumber.hs index b46de97..fbae3ee 100644 --- a/src/Twilio/IncomingPhoneNumber.hs +++ b/src/Twilio/IncomingPhoneNumber.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -18,7 +19,9 @@ module Twilio.IncomingPhoneNumber import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Internal/Request.hs b/src/Twilio/Internal/Request.hs index dfd4cc2..deb98e9 100644 --- a/src/Twilio/Internal/Request.hs +++ b/src/Twilio/Internal/Request.hs @@ -74,5 +74,4 @@ runRequest' credentials (RequestT (FreeT m)) = m >>= \case else do let body = responseBody response body' <- LBS.fromChunks <$> brConsume body - print body' go $ const body' <$> response diff --git a/src/Twilio/Message.hs b/src/Twilio/Message.hs index 385ce46..1f865eb 100644 --- a/src/Twilio/Message.hs +++ b/src/Twilio/Message.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -21,7 +22,9 @@ module Twilio.Message import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Message/Media.hs b/src/Twilio/Message/Media.hs index 8dcc46e..6630c28 100644 --- a/src/Twilio/Message/Media.hs +++ b/src/Twilio/Message/Media.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -20,7 +21,9 @@ module Twilio.Message.Media import Control.Monad import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import GHC.Generics diff --git a/src/Twilio/Message/MediaList.hs b/src/Twilio/Message/MediaList.hs index 91337f2..7384e7f 100644 --- a/src/Twilio/Message/MediaList.hs +++ b/src/Twilio/Message/MediaList.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -21,7 +22,9 @@ import Control.Applicative import Data.Aeson import Data.Data import Data.Maybe +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import GHC.Generics import Twilio.Internal.Request diff --git a/src/Twilio/OutgoingCallerID.hs b/src/Twilio/OutgoingCallerID.hs index c88d097..75dcab8 100644 --- a/src/Twilio/OutgoingCallerID.hs +++ b/src/Twilio/OutgoingCallerID.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -19,7 +20,9 @@ module Twilio.OutgoingCallerID import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Queue.hs b/src/Twilio/Queue.hs index 4815dc7..259befb 100644 --- a/src/Twilio/Queue.hs +++ b/src/Twilio/Queue.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -22,7 +23,9 @@ import Control.Monad import Control.Monad.Catch import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import GHC.Generics diff --git a/src/Twilio/Queue/Member.hs b/src/Twilio/Queue/Member.hs index 52f48d8..ef0a477 100644 --- a/src/Twilio/Queue/Member.hs +++ b/src/Twilio/Queue/Member.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -19,7 +20,9 @@ module Twilio.Queue.Member import Control.Monad import Data.Aeson import Data.Data +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Time.Clock import GHC.Generics import Network.URI diff --git a/src/Twilio/Queue/Members.hs b/src/Twilio/Queue/Members.hs index 9564786..27ef948 100644 --- a/src/Twilio/Queue/Members.hs +++ b/src/Twilio/Queue/Members.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE DeriveDataTypeable #-} {-#LANGUAGE DeriveGeneric #-} {-#LANGUAGE MultiParamTypeClasses #-} @@ -20,7 +21,9 @@ import Control.Applicative import Data.Aeson import Data.Data import Data.Maybe +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import GHC.Generics import Twilio.Queue.Member diff --git a/src/Twilio/Recording.hs b/src/Twilio/Recording.hs index 33036a7..cf5d450 100644 --- a/src/Twilio/Recording.hs +++ b/src/Twilio/Recording.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -20,7 +21,9 @@ import Control.Error.Safe import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Time.Clock import Network.URI diff --git a/src/Twilio/ShortCode.hs b/src/Twilio/ShortCode.hs index fd109f9..d021065 100644 --- a/src/Twilio/ShortCode.hs +++ b/src/Twilio/ShortCode.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -18,7 +19,9 @@ module Twilio.ShortCode import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Transcription.hs b/src/Twilio/Transcription.hs index 8246cb4..dd07dd4 100644 --- a/src/Twilio/Transcription.hs +++ b/src/Twilio/Transcription.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -22,7 +23,9 @@ import Control.Error.Safe import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/src/Twilio/Types.hs b/src/Twilio/Types.hs index 8bf3797..f9ea448 100644 --- a/src/Twilio/Types.hs +++ b/src/Twilio/Types.hs @@ -34,7 +34,9 @@ import Control.Monad import Control.Monad.Reader.Class import Data.Aeson import qualified Data.ByteString.Char8 as C +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import qualified Data.Text as T #if MIN_VERSION_http_client(0,5,0) diff --git a/src/Twilio/UsageTrigger.hs b/src/Twilio/UsageTrigger.hs index 01fba7a..5b5f8a5 100644 --- a/src/Twilio/UsageTrigger.hs +++ b/src/Twilio/UsageTrigger.hs @@ -1,3 +1,4 @@ +{-#LANGUAGE CPP #-} {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE OverloadedStrings #-} {-#LANGUAGE ViewPatterns #-} @@ -18,7 +19,9 @@ module Twilio.UsageTrigger import Control.Monad import Control.Monad.Catch import Data.Aeson +#if __GLASGOW_HASKELL__ <= 802 import Data.Monoid +#endif import Data.Text (Text) import Data.Time.Clock import Network.URI diff --git a/twilio.cabal b/twilio.cabal index a32f3c8..068dbd1 100644 --- a/twilio.cabal +++ b/twilio.cabal @@ -1,5 +1,5 @@ name: twilio -version: 0.3.0.0 +version: 0.3.0.1 synopsis: Twilio REST API library for Haskell description: This package exports bindings to Twilio's REST API (). While we would like to have a complete binding to Twilio's REST API, this package is being developed on demand. If you need something that has not been implemented yet, please send a pull request or file an issue on GitHub (). homepage: https://github.com/markandrus/twilio-haskell @@ -12,7 +12,7 @@ build-type: Simple cabal-version: >=1.8 -- NOTE(mroberts): See https://github.com/markandrus/twilio-haskell/issues/44 -- tested-with: GHC == 7.8.4, GHC == 7.10.1, GHC == 7.10.2, GHC == 8.0.1 -tested-with: GHC == 7.10.1, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.0.2 +tested-with: GHC == 7.10.1, GHC == 7.10.2, GHC == 8.0.1, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5 source-repository head type: git @@ -88,7 +88,7 @@ library base ==4.*, binary >=0.7, bytestring ==0.10.*, - containers ==0.5.*, + containers >=0.5, deepseq >=1, errors >=1, exceptions ==0.*,