packages feed

shelly 1.3.0.6 → 1.3.0.7

raw patch · 2 files changed

+20/−15 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

shelly.cabal view
@@ -1,6 +1,6 @@ Name:       shelly -Version:     1.3.0.6+Version:     1.3.0.7 Synopsis:    shell-like (systems) programming in Haskell  Description: Shelly provides convenient systems programming in Haskell,
src/Shelly.hs view
@@ -550,14 +550,13 @@                       | otherwise                        = lookupCache         checkFile = do             exists <- liftIO $ isFile fp-            return $ if exists then Just fp else Nothing+            return $ toMaybe exists fp          lookupPath =-            pathDirs >>= findMapM (\dir -> do+            (pathDirs >>=) $ findMapM $ \dir -> do                 let fullFp = dir </> fp                 res <- liftIO $ isExecutable $ encodeString $ fullFp-                return $ if res then Just fullFp else Nothing-              )+                return $ toMaybe res fullFp          lookupCache = do             pathExecutables <- cachedPathExecutables@@ -589,11 +588,15 @@                 return $ cachedExecutables  +-- | Returns 'Just' if the precondition is fulfilled.+toMaybe :: Bool -> a -> Maybe a+toMaybe False _ = Nothing+toMaybe True x = Just x+ -- | A monadic findMap, taken from MissingM package findMapM :: Monad m => (a -> m (Maybe b)) -> [a] -> m (Maybe b) findMapM _ [] = return Nothing-findMapM f (x:xs) =-  do+findMapM f (x:xs) = do     mb <- f x     if (isJust mb)       then return mb@@ -652,16 +655,18 @@ -- | Set an environment variable. The environment is maintained in Sh -- internally, and is passed to any external commands to be executed. setenv :: Text -> Text -> Sh ()-setenv k v =-  if k == path_env then setPath v else do-      let (kStr, vStr) = (T.unpack k, T.unpack v)-          wibble environment = (kStr, vStr) : filter ((/=kStr) . fst) environment-       in modify $ \x -> x { sEnvironment = wibble $ sEnvironment x }+setenv k v = if k == path_env then setPath v else setenvRaw k v +setenvRaw :: Text -> Text -> Sh ()+setenvRaw k v = modify $ \x -> x { sEnvironment = wibble $ sEnvironment x }+  where+    (kStr, vStr) = (T.unpack k, T.unpack v)+    wibble environment = (kStr, vStr) : filter ((/=kStr) . fst) environment+ setPath :: Text -> Sh () setPath newPath = do   modify $ \x -> x{ sPathExecutables = Nothing }-  setenv path_env newPath+  setenvRaw path_env newPath  path_env :: Text path_env = "PATH"@@ -679,8 +684,8 @@ get_env k = do   mval <- return . fmap T.pack . lookup (T.unpack k) =<< gets sEnvironment   return $ case mval of-    Nothing -> Nothing-    j@(Just val) -> if T.null val then Nothing else j+    Nothing  -> Nothing+    Just val -> toMaybe (not $ T.null val) val  -- | deprecated getenv :: Text -> Sh Text