packages feed

angel 0.3.3 → 0.3.4

raw patch · 5 files changed

+33/−33 lines, 5 filesdep +hspecdep +timedep −old-timedep ~base

Dependencies added: hspec, time

Dependencies removed: old-time

Dependency ranges changed: base

Files

Angel/Config.hs view
@@ -1,6 +1,5 @@ module Angel.Config where -import Data.Maybe (isJust) import Control.Exception (try, SomeException) import qualified Data.Map as M import Control.Monad (when, mapM_)@@ -45,34 +44,20 @@     checkProgram p = void $ when (exec p == Nothing) $ error $ name p ++ " does not have an 'exec' specification"  modifyProg :: Program -> String -> Value -> Program-modifyProg prog "exec" (String s) | isJust (exec prog) = -    error $ "redefinition of '" ++ (name prog) ++ ".exec'"-                                  | otherwise          = -    prog{exec = Just (T.unpack s)}+modifyProg prog "exec" (String s) = prog{exec = Just (T.unpack s)} modifyProg prog "exec" _ = error "wrong type for field 'exec'; string required" -modifyProg prog "delay" (Number n) | isJust (delay prog) =-    error $ "redefinition of '" ++ (name prog) ++ ".prog'"-                                   | n < 0     = error "delay value must be >= 0"+modifyProg prog "delay" (Number n) | n < 0     = error "delay value must be >= 0"                                    | otherwise = prog{delay = Just $ round n} modifyProg prog "delay" _ = error "wrong type for field 'delay'; integer" -modifyProg prog "stdout" (String s) | isJust (stdout prog) =-    error $ "redefinition of '" ++ (name prog) ++ ".stdout'"-                                    | otherwise = -    prog{stdout = Just (T.unpack s)}+modifyProg prog "stdout" (String s) = prog{stdout = Just (T.unpack s)} modifyProg prog "stdout" _ = error "wrong type for field 'stdout'; string required" -modifyProg prog "stderr" (String s) | isJust (stderr prog) = -    error $ "redefinition of '" ++ (name prog) ++ ".stderr'"-                                    | otherwise =-    prog{stderr = Just (T.unpack s)}+modifyProg prog "stderr" (String s) = prog{stderr = Just (T.unpack s)} modifyProg prog "stderr" _ = error "wrong type for field 'stderr'; string required" -modifyProg prog "directory" (String s) | isJust (workingDir prog) = -    error $ "redefinition of '" ++ (name prog) ++ ".directory'"-                                       | otherwise =-    prog{workingDir = (Just $ T.unpack s)}+modifyProg prog "directory" (String s) = prog{workingDir = (Just $ T.unpack s)} modifyProg prog "directory" _ = error "wrong type for field 'directory'; string required"  modifyProg prog n _ = prog
Angel/Files.hs view
@@ -1,5 +1,6 @@ module Angel.Files (getFile, startFileManager) where +import Control.Exception (try, SomeException) import Control.Concurrent.STM import Control.Concurrent.STM.TChan (readTChan, writeTChan, TChan, newTChan, newTChanIO) import Control.Monad (forever)@@ -13,13 +14,13 @@ fileManager :: TChan FileRequest -> IO () fileManager req = do      (path, resp) <- atomically $ readTChan req-    mh <- catch  (openFile path AppendMode >>= \h-> return $ Just h) (\e-> return Nothing)+    mh <- try $ openFile path AppendMode     case mh of-        Just hand -> do+        Right hand -> do             hand' <- hDuplicate hand             hClose hand             atomically $ writeTChan resp (Just hand')-        Nothing -> atomically $ writeTChan resp Nothing+        Left (e :: SomeException) -> atomically $ writeTChan resp Nothing     fileManager req  getFile :: String -> GroupConfig -> IO Handle
Angel/Log.hs view
@@ -1,17 +1,19 @@ module Angel.Log where +import Data.Time.LocalTime (ZonedTime(..),+                            getZonedTime)+import Data.Time.Format (formatTime)+ import Text.Printf (printf)-import System.Time (getClockTime, toCalendarTime, CalendarTime(..), formatCalendarTime) import System.Locale (defaultTimeLocale)  -- |provide a clean, ISO-ish format for timestamps in logs-cleanCalendar :: CalendarTime -> String-cleanCalendar ct = formatCalendarTime defaultTimeLocale "%Y/%m/%d %H:%M:%S" ct+cleanCalendar :: ZonedTime -> String+cleanCalendar = formatTime defaultTimeLocale "%Y/%m/%d %H:%M:%S"  -- |log a line to stdout; indented for use with partial application for  -- |"local log"-type macroing logger :: String -> String -> IO () logger lname msg = do -    tm <- getClockTime-    ct <- toCalendarTime tm-    printf "[%s] {%s} %s\n" (cleanCalendar ct) lname msg+    zt <- getZonedTime+    printf "[%s] {%s} %s\n" (cleanCalendar zt) lname msg
angel.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version:             0.3.3+Version:             0.3.4  -- A short (one-line) description of the package. -- Synopsis:            @@ -54,7 +54,7 @@ -- Extra-source-files:    -- Constraint on the version of Cabal needed to build this package.-Cabal-version:       >=1.6+Cabal-version:       >=1.10   source-repository head@@ -75,7 +75,7 @@   Build-depends: containers >= 0.3   Build-depends: unordered-containers >= 0.1.4   Build-depends: unix >= 2.4-  Build-depends: old-time+  Build-depends: time   Build-depends: old-locale   Build-depends: text>=0.11 @@ -92,6 +92,17 @@   -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.   -- Build-tools:          -  Extensions: OverloadedStrings,ScopedTypeVariables,BangPatterns,ViewPatterns+  Default-Extensions: OverloadedStrings,ScopedTypeVariables,BangPatterns,ViewPatterns+  Default-Language: Haskell2010      Ghc-Options: -threaded ++test-suite spec+  Type:           exitcode-stdio-1.0+  Main-Is:        Spec.hs+  Hs-Source-Dirs: ., test+  Build-Depends:  base+  Build-Depends:  hspec+  Build-depends:  time+  Default-Extensions: OverloadedStrings,ScopedTypeVariables,BangPatterns,ViewPatterns+  Default-Language: Haskell2010
+ test/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}