Hello community,

here is the log from the commit of package ghc-DAV for openSUSE:Factory checked 
in at 2016-10-26 13:28:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-DAV (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-DAV.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-DAV"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-DAV/ghc-DAV.changes  2016-07-21 
08:11:32.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-DAV.new/ghc-DAV.changes     2016-10-26 
13:28:14.000000000 +0200
@@ -1,0 +2,5 @@
+Thu Sep 15 06:40:50 UTC 2016 - psim...@suse.com
+
+- Update to version 1.3.1 revision 0 with cabal2obs.
+
+-------------------------------------------------------------------

Old:
----
  1.cabal
  DAV-1.2.tar.gz

New:
----
  DAV-1.3.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-DAV.spec ++++++
--- /var/tmp/diff_new_pack.Axh8eo/_old  2016-10-26 13:28:15.000000000 +0200
+++ /var/tmp/diff_new_pack.Axh8eo/_new  2016-10-26 13:28:15.000000000 +0200
@@ -18,26 +18,24 @@
 
 %global pkg_name DAV
 Name:           ghc-%{pkg_name}
-Version:        1.2
+Version:        1.3.1
 Release:        0
 Summary:        RFC 4918 WebDAV support
 License:        GPL-3.0+
-Group:          System/Libraries
+Group:          Development/Languages/Other
 Url:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
-Source1:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal
 BuildRequires:  ghc-Cabal-devel
-# Begin cabal-rpm deps:
 BuildRequires:  ghc-bytestring-devel
 BuildRequires:  ghc-case-insensitive-devel
 BuildRequires:  ghc-containers-devel
 BuildRequires:  ghc-data-default-devel
 BuildRequires:  ghc-exceptions-devel
+BuildRequires:  ghc-haskeline-devel
 BuildRequires:  ghc-http-client-devel
 BuildRequires:  ghc-http-client-tls-devel
 BuildRequires:  ghc-http-types-devel
 BuildRequires:  ghc-lens-devel
-BuildRequires:  ghc-mtl-compat-devel
 BuildRequires:  ghc-mtl-devel
 BuildRequires:  ghc-network-devel
 BuildRequires:  ghc-network-uri-devel
@@ -50,7 +48,6 @@
 BuildRequires:  ghc-xml-conduit-devel
 BuildRequires:  ghc-xml-hamlet-devel
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-# End cabal-rpm deps
 
 %description
 This is a library for the Web Distributed Authoring and Versioning (WebDAV)
@@ -73,17 +70,13 @@
 
 %prep
 %setup -q -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
-
 
 %build
 %ghc_lib_build
 
-
 %install
 %ghc_lib_install
 
-
 %post devel
 %ghc_pkg_recache
 

++++++ DAV-1.2.tar.gz -> DAV-1.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DAV-1.2/DAV.cabal new/DAV-1.3.1/DAV.cabal
--- old/DAV-1.2/DAV.cabal       2015-09-19 06:08:17.000000000 +0200
+++ new/DAV-1.3.1/DAV.cabal     2016-07-15 20:45:16.000000000 +0200
@@ -1,5 +1,5 @@
 name:                DAV
-version:             1.2
+version:             1.3.1
 synopsis:            RFC 4918 WebDAV support
 description:
    This is a library for the Web Distributed Authoring and Versioning
@@ -15,7 +15,7 @@
 license-file:        LICENSE
 author:              Clint Adams
 maintainer:          cl...@debian.org
-copyright:           Copyright (C) 2012-2015  Clint Adams
+copyright:           Copyright (C) 2012-2016  Clint Adams
 category:            Web
 build-type:          Simple
 cabal-version:       >=1.8
@@ -25,6 +25,10 @@
   description: Get Network.URI from the network-uri package
   default: True
 
+flag mtl-compat
+  description: Get Control.Monad.Except from the mtl-compat package
+  default: False
+
 library
   exposed-modules:  Network.Protocol.HTTP.DAV
   other-modules:    Network.Protocol.HTTP.DAV.TH
@@ -39,14 +43,17 @@
                      , http-client-tls >= 0.2
                      , http-types >= 0.7
                      , lens >= 3.0
-                     , mtl >= 2.1
-                     , mtl-compat
                      , transformers >= 0.3
                      , transformers-base
                      , transformers-compat >= 0.3
                      , utf8-string
                      , xml-conduit >= 1.0
                      , xml-hamlet >= 0.4           && < 0.5
+  if flag(mtl-compat)
+    build-depends: mtl >= 2.1 && < 2.2.1, mtl-compat
+  else
+    build-depends: mtl >= 2.2.1
+
 executable hdav
   main-is:           hdav.hs
   ghc-options:       -Wall
@@ -57,12 +64,11 @@
                      , containers
                      , data-default
                      , exceptions >= 0.7
+                     , haskeline
                      , http-client >= 0.4
                      , http-client-tls >= 0.2
                      , http-types >= 0.7
                      , lens >= 3.0
-                     , mtl >= 2.1
-                     , mtl-compat
                      , optparse-applicative >= 0.10.0
                      , transformers >= 0.3
                      , transformers-base
@@ -70,6 +76,10 @@
                      , utf8-string
                      , xml-conduit >= 1.0
                      , xml-hamlet >= 0.4           && < 0.5
+  if flag(mtl-compat)
+    build-depends: mtl >= 2.1 && < 2.2.1, mtl-compat
+  else
+    build-depends: mtl >= 2.2.1
   if flag(network-uri)
     build-depends: network-uri >= 2.6, network >= 2.6
   else
@@ -83,4 +93,4 @@
 source-repository this
   type:     git
   location: git://anonscm.debian.org/users/clint/DAV.git
-  tag:      DAV/1.2
+  tag:      DAV/1.3.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DAV-1.2/Network/Protocol/HTTP/DAV.hs 
new/DAV-1.3.1/Network/Protocol/HTTP/DAV.hs
--- old/DAV-1.2/Network/Protocol/HTTP/DAV.hs    2015-09-19 06:08:17.000000000 
+0200
+++ new/DAV-1.3.1/Network/Protocol/HTTP/DAV.hs  2016-07-15 20:45:16.000000000 
+0200
@@ -1,5 +1,5 @@
 -- DAV.hs: WebDAV client library
--- Copyright © 2012-2015  Clint Adams
+-- Copyright © 2012-2016  Clint Adams
 --
 -- vim: softtabstop=4:shiftwidth=4:expandtab
 --
@@ -19,7 +19,7 @@
 {-# LANGUAGE OverloadedStrings, ConstraintKinds, FlexibleContexts,
              QuasiQuotes, RankNTypes, GeneralizedNewtypeDeriving,
              FlexibleInstances, MultiParamTypeClasses, UndecidableInstances,
-             TypeFamilies #-}
+             TypeFamilies, CPP #-}
 
 module Network.Protocol.HTTP.DAV (
     DAVT(..)
@@ -52,12 +52,15 @@
 
 import Network.Protocol.HTTP.DAV.TH
 
-import Control.Applicative (liftA2, Alternative, Applicative)
+#if !MIN_VERSION_base(4,8,0)
+import Control.Applicative (Applicative)
+#endif
+import Control.Applicative (liftA2, Alternative)
 import Control.Monad.Trans.Except (ExceptT(..), throwE, runExceptT)
 import Control.Lens ((^.), (.=), (%=), (.~))
 import Control.Monad (when, MonadPlus)
 import Control.Monad.Base (MonadBase(..))
-import Control.Monad.Catch (bracket, bracketOnError, catchJust, finally, 
throwM, mask, uninterruptibleMask, MonadCatch, MonadThrow)
+import Control.Monad.Catch (catchJust, throwM, MonadCatch, MonadThrow)
 import qualified Control.Monad.Catch as MonadCatch
 import Control.Monad.Except (MonadError, catchError, throwError)
 import Control.Monad.Fix (MonadFix)
@@ -74,9 +77,14 @@
 
 import Data.Maybe (catMaybes, fromMaybe)
 
-import Network.HTTP.Client (RequestBody(..), httpLbs, parseUrl, 
applyBasicAuth, Request(..), Response(..), newManager, HttpException(..), 
BodyReader, withResponse, path)
+#if MIN_VERSION_http_client(0,5,0)
+import Network.HTTP.Client (defaultRequest, 
HttpExceptionContent(StatusCodeException), parseUrlThrow, 
responseTimeoutDefault, responseTimeoutMicro)
+#else
+import Network.HTTP.Client (parseUrl)
+#endif
+import Network.HTTP.Client (RequestBody(..), httpLbs, applyBasicAuth, 
Request(..), Response(..), newManager, HttpException(..), BodyReader, 
withResponse, path)
 import Network.HTTP.Client.TLS (tlsManagerSettings)
-import Network.HTTP.Types (hContentType, Method, Status, RequestHeaders, 
unauthorized401, conflict409)
+import Network.HTTP.Types (hContentType, Method, Status, RequestHeaders, 
conflict409)
 
 import qualified Text.XML as XML
 import Text.XML.Cursor (($/), (&/), element, node, fromDocument, checkName)
@@ -85,7 +93,11 @@
 import Data.CaseInsensitive (mk)
 
 instance Default DAVContext where
+#if MIN_VERSION_http_client(0,5,0)
+    def = DAVContext [] defaultRequest B.empty B.empty [] Nothing def Nothing 
"hDav-using application"
+#else
     def = DAVContext [] def B.empty B.empty [] Nothing def Nothing "hDav-using 
application"
+#endif
 
 newtype DAVT m a = DAVT { runDAVT :: ExceptT String (StateT DAVContext m) a }
     deriving (Alternative, Applicative, Functor, Monad, MonadBase b, 
MonadError String, MonadFix, MonadIO, MonadPlus, MonadState DAVContext)
@@ -111,7 +123,11 @@
 mkDAVContext :: MonadIO m => DAVURL -> m DAVContext
 mkDAVContext u = liftIO $ do
     mgr <- liftIO $ newManager tlsManagerSettings
+#if MIN_VERSION_http_client(0,5,0)
+    req <- liftIO $ parseUrlThrow u
+#else
     req <- liftIO $ parseUrl u
+#endif
     return $ def { _baseRequest = req, _httpManager = Just mgr }
 
 {-# DEPRECATED closeDAVContext "deprecated because http-client deprecated 
closeManager" #-}
@@ -134,7 +150,11 @@
 setUserAgent ua = userAgent .= ua
 
 setResponseTimeout :: MonadIO m => Maybe Int -> DAVT m ()
+#if MIN_VERSION_http_client(0,5,0)
+setResponseTimeout rt = baseRequest %= \x -> x { responseTimeout = maybe 
responseTimeoutDefault responseTimeoutMicro rt }
+#else
 setResponseTimeout rt = baseRequest %= \x -> x { responseTimeout = rt }
+#endif
 
 mkDavRequest :: MonadIO m => Method -> RequestHeaders -> RequestBody -> DAVT m 
Request
 mkDavRequest meth addlhdrs rbody = do
@@ -157,8 +177,13 @@
       maybe (DAVT $ throwE "Can't perform request without manager") (liftIO . 
httpLbs req) (ctx ^. httpManager)
 
 matchStatusCodeException :: Status -> HttpException -> Maybe ()
+#if MIN_VERSION_http_client(0,5,0)
+matchStatusCodeException want (HttpExceptionRequest _ (StatusCodeException 
resp _))
+    | responseStatus resp == want = Just ()
+#else
 matchStatusCodeException want (StatusCodeException s _ _)
     | s == want = Just ()
+#endif
     | otherwise = Nothing
 matchStatusCodeException _ _ = Nothing
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DAV-1.2/hdav.hs new/DAV-1.3.1/hdav.hs
--- old/DAV-1.2/hdav.hs 2015-09-19 06:08:17.000000000 +0200
+++ new/DAV-1.3.1/hdav.hs       2016-07-15 20:45:16.000000000 +0200
@@ -1,7 +1,5 @@
-{-# LANGUAGE FlexibleContexts #-}
-
 -- hdav.hs: WebDAV client
--- Copyright © 2012-2014  Clint Adams
+-- Copyright © 2012-2016  Clint Adams
 --
 -- vim: softtabstop=4:shiftwidth=4:expandtab
 --
@@ -18,20 +16,23 @@
 -- You should have received a copy of the GNU General Public License
 -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import qualified Data.ByteString.Char8 as BC8
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleContexts #-}
 
 import Paths_DAV (version)
-import Control.Applicative ((<$>),(<*>), optional, pure)
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as BL
+import qualified Data.ByteString.UTF8 as BU
+#if !MIN_VERSION_base(4,8,0)
+import Control.Applicative ((<$>),(<*>), pure)
+#endif
+import Control.Applicative (optional)
 import Control.Monad (liftM2, unless)
 import Control.Monad.IO.Class (MonadIO)
 import Data.Version (showVersion)
-import Data.Maybe (fromMaybe)
 import Data.Monoid ((<>))
-import Text.XML (renderLBS, def)
-import qualified Data.ByteString.Lazy.Char8 as B
 
 import Network (withSocketsDo)
-
 import Network.URI (normalizePathSegments)
 
 import Network.Protocol.HTTP.DAV (DAVT, evalDAVT, setCreds, setDepth, 
setUserAgent, getPropsM, getContentM, putContentM, putPropsM, delContentM, 
moveContentM, mkCol, Depth(..), caldavReportM, withLockIfPossible, 
withLockIfPossibleForDelete)
@@ -40,13 +41,18 @@
 import Options.Applicative.Extra (customExecParser)
 import Options.Applicative.Types (Parser)
 
+import System.Console.Haskeline (runInputT, getPassword)
+import qualified System.Console.Haskeline as SCH
+
+import Text.XML (renderLBS, def)
+
 data Options = Options {
     url :: String
   , url2 :: String
-  , username :: String
-  , password :: String
-  , username2 :: String
-  , password2 :: String
+  , username :: Maybe String
+  , password :: Maybe String
+  , username2 :: Maybe String
+  , password2 :: Maybe String
 }
 
 data Command = Copy Options | Move Options | Delete Options | MakeCollection 
Options | GetProps Options (Maybe Depth) | Put FilePath Options | CaldavReport 
Options
@@ -55,104 +61,108 @@
 oneUUP = Options
     <$> argument str ( metavar "URL" )
     <*> pure ""
-    <*> (fromMaybe "" <$> (optional $ strOption
+    <*> (optional $ strOption
         ( long "username"
        <> metavar "USERNAME"
-       <> help "username for URL" )))
-    <*> (fromMaybe "" <$> (optional $ strOption
+       <> help "username for URL" ))
+    <*> (optional $ strOption
         ( long "password"
        <> metavar "PASSWORD"
-       <> help "password for URL" )))
-    <*> pure ""
-    <*> pure ""
+       <> help "password for URL" ))
+    <*> pure Nothing
+    <*> pure Nothing
 
 twoUUP :: Parser Options
 twoUUP = Options
     <$> argument str ( metavar "SOURCEURL" )
     <*> argument str ( metavar "TARGETURL" )
-    <*> (fromMaybe "" <$> (optional $ strOption
+    <*> (optional $ strOption
         ( long "source-username"
        <> metavar "USERNAME"
-       <> help "username for source URL" )))
-    <*> (fromMaybe "" <$> (optional $ strOption
+       <> help "username for source URL" ))
+    <*> (optional $ strOption
         ( long "source-password"
        <> metavar "PASSWORD"
-       <> help "password for source URL" )))
-    <*> (fromMaybe "" <$> (optional $ strOption
+       <> help "password for source URL" ))
+    <*> (optional $ strOption
         ( long "target-username"
        <> metavar "USERNAME"
-       <> help "username for target URL" )))
-    <*> (fromMaybe "" <$> (optional $ strOption
+       <> help "username for target URL" ))
+    <*> (optional $ strOption
         ( long "target-password"
        <> metavar "PASSWORD"
-       <> help "password for target URL" )))
+       <> help "password for target URL" ))
 
 twoUoneUP :: Parser Options
 twoUoneUP = Options
     <$> argument str ( metavar "SOURCEURL" )
     <*> argument str ( metavar "TARGETURL" )
-    <*> (fromMaybe "" <$> (optional $ strOption
+    <*> (optional $ strOption
         ( long "username"
        <> metavar "USERNAME"
-       <> help "username for URL" )))
-    <*> (fromMaybe "" <$> (optional $ strOption
+       <> help "username for URL" ))
+    <*> (optional $ strOption
         ( long "password"
        <> metavar "PASSWORD"
-       <> help "password for URL" )))
-    <*> pure ""
-    <*> pure ""
+       <> help "password for URL" ))
+    <*> pure Nothing
+    <*> pure Nothing
 
 doCopy :: Options -> IO ()
 doCopy o = do
+     (sourceUsername, sourcePassword) <- ingestCreds ("source URL " ++ 
sourceurl) (username o) (password o)
+     (targetUsername, targetPassword) <- ingestCreds ("target URL " ++ 
targeturl) (username2 o) (password2 o)
      (p, b) <- runDAV sourceurl $ setCreds sourceUsername sourcePassword >> 
setDepth (Just Depth0) >> withLockIfPossible True (liftM2 (,) getPropsM 
getContentM)
      runDAV targeturl $ setCreds targetUsername targetPassword >> 
withLockIfPossible False (putContentM b >> putPropsM p)
      where
          sourceurl = url o
          targeturl = url2 o
-         sourceUsername = BC8.pack $ username o
-         sourcePassword = BC8.pack $ password o
-         targetUsername = BC8.pack $ username2 o
-         targetPassword = BC8.pack $ password2 o
 
 doDelete :: Options -> IO ()
-doDelete o = runDAV (url o) $ setCreds (BC8.pack $ username o) (BC8.pack $ 
password o) >> withLockIfPossibleForDelete False delContentM
+doDelete o = do
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    runDAV (url o) $ setCreds u p >> withLockIfPossibleForDelete False 
delContentM
 
 doMove :: Options -> IO ()
-doMove o = runDAV (url o) $ setCreds (BC8.pack $ username o) (BC8.pack $ 
password o) >> moveContentM (BC8.pack $ url2 o)
+doMove o = do
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    runDAV (url o) $ setCreds u p >> moveContentM (BU.fromString $ url2 o)
 
 doMakeCollection :: Options -> IO ()
-doMakeCollection o = go (url o)
+doMakeCollection o = do
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    go (url o) (u, p)
   where
-     u = BC8.pack . username $ o
-     p = BC8.pack . password $ o
-
-     go url' = do
-       ok <- makeCollection url'
+     go url' (u, p) = do
+       ok <- makeCollection url' (u, p)
        unless ok $ do
-         go (parent url')
-         ok' <- makeCollection url'
+         go (parent url') (u, p)
+         ok' <- makeCollection url' (u, p)
          unless ok' $
            error $ "failed creating " ++ url'
 
      parent url' = reverse $ dropWhile (== '/')$ reverse $
         normalizePathSegments (url' ++ "/..")
 
-     makeCollection url' = runDAV url' $ setCreds u p >> mkCol
+     makeCollection url' (u, p) = runDAV url' $ setCreds u p >> mkCol
 
 doGetProps :: Options -> Maybe Depth -> IO ()
 doGetProps o md = do
-     doc <- runDAV (url o) $ setCreds (BC8.pack $ username o) (BC8.pack $ 
password o) >> setDepth md >> getPropsM
-     B.putStrLn (renderLBS def doc)
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    doc <- runDAV (url o) $ setCreds u p >> setDepth md >> getPropsM
+    BL.putStr (renderLBS def doc)
 
 doPut :: FilePath -> Options -> IO ()
 doPut file o = do
-     bs <- B.readFile file
-     runDAV (url o) $ setCreds (BC8.pack $ username o) (BC8.pack $ password o) 
>> putContentM (Nothing, bs)
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    bs <- BL.readFile file
+    runDAV (url o) $ setCreds u p >> putContentM (Nothing, bs)
 
 doReport :: Options -> IO ()
 doReport o = do
-     doc <- runDAV (url o) $ setCreds (BC8.pack $ username o) (BC8.pack $ 
password o) >> setDepth (Just Depth1) >> caldavReportM
-     B.putStrLn (renderLBS def doc)
+    (u, p) <- ingestCreds ("URL " ++ url o) (username o) (password o)
+    doc <- runDAV (url o) $ setCreds u p >> setDepth (Just Depth1) >> 
caldavReportM
+    BL.putStr (renderLBS def doc)
 
 dispatch :: Command -> IO ()
 dispatch (Copy o) = doCopy o
@@ -165,10 +175,11 @@
 
 main :: IO ()
 main = withSocketsDo $ do
-    putStrLn $ "hDAV version " ++ showVersion version ++ ", Copyright (C) 
2012-2014  Clint Adams\n\
-   \hDAV comes with ABSOLUTELY NO WARRANTY.\n\
-   \This is free software, and you are welcome to redistribute it\n\
-   \under certain conditions.\n"
+    putStrLn $ concat [
+      "hDAV version ", showVersion version, ", Copyright (C) 2012-2016  Clint 
Adams\n",
+      "hDAV comes with ABSOLUTELY NO WARRANTY.\n",
+      "This is free software, and you are welcome to redistribute it\n",
+      "under certain conditions.\n"]
 
     customExecParser (prefs showHelpOnError) (info cmd idm) >>= dispatch
 
@@ -187,6 +198,13 @@
    depth = option auto ( long "depth" <> metavar "DEPTH" <> help "depth" ) :: 
Parser Depth
 
 runDAV :: MonadIO m => String -> DAVT m a -> m a
-runDAV u f = evalDAVT u (setUserAgent (BC8.pack $ "hDAV/" ++ showVersion 
version) >> f) >>= \x -> case x of
+runDAV u f = evalDAVT u (setUserAgent (BU.fromString $ "hDAV/" ++ showVersion 
version) >> f) >>= \x -> case x of
     Left e -> error e
     Right r -> return r
+
+ingestCreds :: String -> Maybe String -> Maybe String -> IO (B.ByteString, 
B.ByteString)
+ingestCreds _ Nothing _ = return (B.empty, B.empty)
+ingestCreds _ (Just u) (Just p) = return (BU.fromString u, BU.fromString p)
+ingestCreds q (Just u) Nothing = do
+    mnewp <- runInputT SCH.defaultSettings $ getPassword (Just '*') (concat 
["Password for ", u, " at ", q, ": "])
+    return (BU.fromString u, maybe B.empty BU.fromString mnewp)


Reply via email to