Hello community,

here is the log from the commit of package ghc-optparse-simple for 
openSUSE:Factory checked in at 2018-05-30 12:11:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-optparse-simple (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-optparse-simple.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-optparse-simple"

Wed May 30 12:11:13 2018 rev:4 rq:607850 version:0.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-optparse-simple/ghc-optparse-simple.changes  
2017-09-15 22:02:41.373395399 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-optparse-simple.new/ghc-optparse-simple.changes 
    2018-05-30 12:26:38.355655360 +0200
@@ -1,0 +2,8 @@
+Mon May 14 17:02:11 UTC 2018 - psim...@suse.com
+
+- Update optparse-simple to version 0.1.0.
+  * Migrate from `EitherT` to `ExceptT`
+    [#8](https://github.com/fpco/optparse-simple/issues/8)
+  * Support `--help` on subcommands
+
+-------------------------------------------------------------------

Old:
----
  optparse-simple-0.0.3.tar.gz

New:
----
  optparse-simple-0.1.0.tar.gz

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

Other differences:
------------------
++++++ ghc-optparse-simple.spec ++++++
--- /var/tmp/diff_new_pack.5vyaBd/_old  2018-05-30 12:26:39.187626995 +0200
+++ /var/tmp/diff_new_pack.5vyaBd/_new  2018-05-30 12:26:39.191626858 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-optparse-simple
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,8 +17,9 @@
 
 
 %global pkg_name optparse-simple
+%bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.0.3
+Version:        0.1.0
 Release:        0
 Summary:        Simple interface to optparse-applicative
 License:        BSD-3-Clause
@@ -26,12 +27,15 @@
 URL:            https://hackage.haskell.org/package/%{pkg_name}
 Source0:        
https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
 BuildRequires:  ghc-Cabal-devel
-BuildRequires:  ghc-either-devel
 BuildRequires:  ghc-gitrev-devel
 BuildRequires:  ghc-optparse-applicative-devel
 BuildRequires:  ghc-rpm-macros
 BuildRequires:  ghc-template-haskell-devel
 BuildRequires:  ghc-transformers-devel
+%if %{with tests}
+BuildRequires:  ghc-bytestring-devel
+BuildRequires:  ghc-directory-devel
+%endif
 
 %description
 Simple interface to optparse-applicative.
@@ -57,6 +61,9 @@
 %install
 %ghc_lib_install
 
+%check
+%cabal_test
+
 %post devel
 %ghc_pkg_recache
 
@@ -64,8 +71,9 @@
 %ghc_pkg_recache
 
 %files -f %{name}.files
-%doc LICENSE
+%license LICENSE
 
 %files devel -f %{name}-devel.files
+%doc ChangeLog.md README.md
 
 %changelog

++++++ optparse-simple-0.0.3.tar.gz -> optparse-simple-0.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-simple-0.0.3/ChangeLog.md 
new/optparse-simple-0.1.0/ChangeLog.md
--- old/optparse-simple-0.0.3/ChangeLog.md      1970-01-01 01:00:00.000000000 
+0100
+++ new/optparse-simple-0.1.0/ChangeLog.md      2017-11-28 10:33:56.000000000 
+0100
@@ -0,0 +1,8 @@
+## 0.1.0
+
+* Migrate from `EitherT` to `ExceptT`
+  [#8](https://github.com/fpco/optparse-simple/issues/8)
+
+## 0.0.4
+
+* Support `--help` on subcommands
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-simple-0.0.3/README.md 
new/optparse-simple-0.1.0/README.md
--- old/optparse-simple-0.0.3/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/optparse-simple-0.1.0/README.md 2017-10-30 14:35:37.000000000 +0100
@@ -0,0 +1,37 @@
+optparse-simple
+=====
+
+Simple interface to optparse-applicative
+
+## Usage
+
+Typical usage with no commands:
+
+``` haskell
+do (opts,()) <-
+     simpleOptions "ver"
+                   "header"
+                   "desc"
+                   (flag () () (long "some-flag"))
+                   empty
+   doThings opts
+```
+
+Typical usage with commands:
+
+``` haskell
+do (opts,runCmd) <-
+     simpleOptions "ver"
+                   "header"
+                   "desc"
+                   (pure ()) $
+     do addCommand "delete"
+                   "Delete the thing"
+                   (const deleteTheThing)
+                   (pure ())
+        addCommand "create"
+                   "Create a thing"
+                   createAThing
+                   (strOption (long "hello"))
+   runCmd
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-simple-0.0.3/optparse-simple.cabal 
new/optparse-simple-0.1.0/optparse-simple.cabal
--- old/optparse-simple-0.0.3/optparse-simple.cabal     2015-05-31 
15:16:01.000000000 +0200
+++ new/optparse-simple-0.1.0/optparse-simple.cabal     2017-11-28 
10:34:07.000000000 +0100
@@ -1,23 +1,59 @@
-name:                optparse-simple
-version:             0.0.3
-synopsis:            Simple interface to optparse-applicative
-description:         Simple interface to optparse-applicative
-license:             BSD3
-license-file:        LICENSE
-author:              FP Complete
-maintainer:          chrisd...@fpcomplete.com
-copyright:           2015 FP Complete
-category:            Options
-build-type:          Simple
-cabal-version:       >=1.8
+-- This file has been generated from package.yaml by hpack version 0.20.0.
+--
+-- see: https://github.com/sol/hpack
+--
+-- hash: 5955f8eb9562e24b8a68ecf2cb4c0674a9de7508574a10a44469d8e88bbebdb9
+
+name:           optparse-simple
+version:        0.1.0
+synopsis:       Simple interface to optparse-applicative
+description:    Please see the README at 
<https://www.stackage.org/package/optparse-simple>
+category:       Options
+homepage:       https://github.com/fpco/optparse-simple#readme
+bug-reports:    https://github.com/fpco/optparse-simple/issues
+author:         FP Complete
+maintainer:     chrisd...@fpcomplete.com
+copyright:      2015-2017 FP Complete
+license:        BSD3
+license-file:   LICENSE
+build-type:     Simple
+cabal-version:  >= 1.10
+
+extra-source-files:
+    ChangeLog.md
+    README.md
+
+source-repository head
+  type: git
+  location: https://github.com/fpco/optparse-simple
 
 library
-  hs-source-dirs:    src/
-  ghc-options:       -Wall -O2
-  exposed-modules:   Options.Applicative.Simple
-  build-depends:     base >= 4 && <5
-                   , template-haskell
-                   , transformers
-                   , optparse-applicative
-                   , gitrev
-                   , either
+  hs-source-dirs:
+      src/
+  ghc-options: -Wall
+  build-depends:
+      base >=4 && <5
+    , gitrev
+    , optparse-applicative
+    , template-haskell
+    , transformers >=0.4
+  exposed-modules:
+      Options.Applicative.Simple
+  other-modules:
+      Paths_optparse_simple
+  default-language: Haskell2010
+
+test-suite test
+  type: exitcode-stdio-1.0
+  main-is: Main.hs
+  hs-source-dirs:
+      test
+  ghc-options: -Wall
+  build-depends:
+      base
+    , bytestring
+    , directory
+    , optparse-simple
+  other-modules:
+      Paths_optparse_simple
+  default-language: Haskell2010
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/optparse-simple-0.0.3/src/Options/Applicative/Simple.hs 
new/optparse-simple-0.1.0/src/Options/Applicative/Simple.hs
--- old/optparse-simple-0.0.3/src/Options/Applicative/Simple.hs 2015-05-31 
15:16:01.000000000 +0200
+++ new/optparse-simple-0.1.0/src/Options/Applicative/Simple.hs 2017-11-28 
10:33:56.000000000 +0100
@@ -39,7 +39,7 @@
   ) where
 
 import           Control.Monad.Trans.Class (lift)
-import           Control.Monad.Trans.Either
+import           Control.Monad.Trans.Except
 import           Control.Monad.Trans.Writer
 import           Data.Monoid
 import           Data.Version
@@ -59,7 +59,7 @@
   -- ^ program description
   -> Parser a
   -- ^ global settings
-  -> EitherT b (Writer (Mod CommandFields b)) ()
+  -> ExceptT b (Writer (Mod CommandFields b)) ()
   -- ^ commands (use 'addCommand')
   -> IO (a,b)
 simpleOptions versionString h pd globalParser commandParser =
@@ -98,10 +98,10 @@
            -> String   -- ^ title of command
            -> (a -> b) -- ^ constructor to wrap up command in common data type
            -> Parser a -- ^ command parser
-           -> EitherT b (Writer (Mod CommandFields b)) ()
+           -> ExceptT b (Writer (Mod CommandFields b)) ()
 addCommand cmd title constr inner =
   lift (tell (command cmd
-                      (info (constr <$> inner)
+                      (info (constr <$> (helper <*> inner))
                             (progDesc title))))
 
 -- | Add a command that takes sub-commands to the options dispatcher.
@@ -128,9 +128,9 @@
   -- ^ command string
   -> String
   -- ^ title of command
-  -> EitherT b (Writer (Mod CommandFields b)) ()
+  -> ExceptT b (Writer (Mod CommandFields b)) ()
   -- ^ sub-commands (use 'addCommand')
-  -> EitherT b (Writer (Mod CommandFields b)) ()
+  -> ExceptT b (Writer (Mod CommandFields b)) ()
 addSubCommands cmd title commandParser =
   addCommand cmd
              title
@@ -160,7 +160,7 @@
 simpleParser
   :: Parser a
   -- ^ common settings
-  -> EitherT b (Writer (Mod CommandFields b)) ()
+  -> ExceptT b (Writer (Mod CommandFields b)) ()
   -- ^ commands (use 'addCommand')
   -> Parser (a,b)
 simpleParser commonParser commandParser =
@@ -171,6 +171,6 @@
           help "Show this help text"
         config =
           (,) <$> commonParser <*>
-          case runWriter (runEitherT commandParser) of
+          case runWriter (runExceptT commandParser) of
             (Right (),d) -> subparser d
             (Left b,_) -> pure b
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/optparse-simple-0.0.3/test/Main.hs 
new/optparse-simple-0.1.0/test/Main.hs
--- old/optparse-simple-0.0.3/test/Main.hs      1970-01-01 01:00:00.000000000 
+0100
+++ new/optparse-simple-0.1.0/test/Main.hs      2017-10-31 11:26:44.000000000 
+0100
@@ -0,0 +1,142 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE OverloadedStrings #-}
+
+import Options.Applicative.Simple hiding(action)
+import GHC.IO.Handle
+import System.IO
+import System.Environment
+import Control.Exception
+import Control.Monad
+import System.Directory
+import System.Exit
+import Data.ByteString (ByteString)
+import qualified Data.ByteString as BS
+import Data.Monoid ((<>))
+
+
+shouldBe :: (Show a, Eq a) => a -> a -> IO ()
+shouldBe actual expected
+  | expected == actual = return ()
+  | otherwise = do
+    putStrLn $ "expected: " ++ show expected
+    putStrLn $ "actual  : " ++ show actual
+    exitFailure
+
+catchReturn :: Exception e => IO e -> IO e
+catchReturn io = io `catch` return
+
+catchExitCode :: IO () -> IO ExitCode
+catchExitCode action = catchReturn $ do
+  action
+  return ExitSuccess
+
+data FakeHandles = FakeHandles
+  { fakeIn  :: Handle
+  , fakeOut :: Handle
+  , fakeErr :: Handle
+  , realIn  :: Handle
+  , realOut :: Handle
+  , realErr :: Handle
+  }
+
+openFile' :: FilePath -> IO Handle
+openFile' path = do
+  removeIfExists path
+  openFile path ReadWriteMode
+
+removeIfExists :: FilePath -> IO ()
+removeIfExists path = do
+  exists <- doesFileExist path
+  when exists $ do
+    removeFile path
+
+stdinFile :: FilePath
+stdinFile = ".tmp.stdin"
+
+stdoutFile :: FilePath
+stdoutFile = ".tmp.stdout"
+
+stderrFile :: FilePath
+stderrFile = ".tmp.stderr"
+
+beforeFH :: IO FakeHandles
+beforeFH = do
+  realIn <- hDuplicate stdin
+  realOut <- hDuplicate stdout
+  realErr <- hDuplicate stderr
+
+  fakeIn <- openFile stdinFile ReadWriteMode
+  fakeOut <- openFile' stdoutFile
+  fakeErr <- openFile' stderrFile
+
+  hDuplicateTo fakeIn stdin
+  hDuplicateTo fakeOut stdout
+  hDuplicateTo fakeErr stderr
+
+  return FakeHandles{..}
+
+afterFH :: FakeHandles -> IO ()
+afterFH FakeHandles{..} = do
+  hDuplicateTo realIn stdin
+  hDuplicateTo realOut stdout
+  hDuplicateTo realErr stderr
+
+  hClose fakeIn
+  hClose fakeOut
+  hClose fakeErr
+
+withFakeHandles :: IO a -> IO a
+withFakeHandles = bracket beforeFH afterFH . const
+
+withStdIn :: ByteString -> IO ()
+  -> IO (ByteString, ByteString, ExitCode)
+withStdIn inBS action = do
+  BS.writeFile stdinFile inBS
+  withFakeHandles $ do
+    _ <- catchExitCode action
+    hFlush stdout
+    hFlush stderr
+  out <- BS.readFile stdoutFile
+  err <- BS.readFile stderrFile
+
+  removeIfExists stdinFile
+  removeIfExists stdoutFile
+  removeIfExists stderrFile
+
+  return (out, err, ExitSuccess)
+
+
+main :: IO ()
+main = do
+  (out, err, exitCode) <- withStdIn ""
+    $ withArgs ["--version"]
+    $ simpleProg
+  exitCode `shouldBe` ExitSuccess
+  err `shouldBe` ""
+  out `shouldBe` "version\n"
+
+  (out', err', exitCode') <- withStdIn ""
+    $ withArgs ["--summary"]
+    $ summaryProg
+  exitCode' `shouldBe` ExitSuccess
+  err' `shouldBe` ""
+  out' `shouldBe` "A program summary\n"
+
+  return ()
+
+
+simpleProg :: IO ()
+simpleProg = do
+  ((), ()) <- simpleOptions "version" "header" "desc" (pure ()) empty
+  return ()
+
+parserWithSummary :: Parser ()
+parserWithSummary = summaryOption <*> pure () where
+  summaryOption = infoOption "A program summary"
+    $ long "summary"
+   <> help "Show program summary"
+
+summaryProg :: IO ()
+summaryProg = do
+  ((), ()) <- simpleOptions "version" "header" "desc" parserWithSummary empty
+  return ()


Reply via email to