support time-1.5.0
This no longer uses old-locale's defaultTimeLocale, but provides one of its own. Factored out a Logs.TimeStamp.
This commit is contained in:
parent
fcb8394e5f
commit
6cf62a9bde
10 changed files with 28 additions and 39 deletions
|
@ -16,6 +16,7 @@ import Assistant.Types.NetMessager
|
|||
import Utility.NotificationBroadcaster
|
||||
import Logs.Transfer
|
||||
import Logs.Trust
|
||||
import Logs.TimeStamp
|
||||
import qualified Remote
|
||||
import qualified Types.Remote as Remote
|
||||
import qualified Git
|
||||
|
@ -23,8 +24,6 @@ import qualified Git
|
|||
import Control.Concurrent.STM
|
||||
import System.Posix.Types
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
import qualified Data.Map as M
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.Text as T
|
||||
|
@ -125,21 +124,18 @@ readDaemonStatusFile file = parse <$> newDaemonStatus <*> readFile file
|
|||
where
|
||||
parse status = foldr parseline status . lines
|
||||
parseline line status
|
||||
| key == "lastRunning" = parseval readtime $ \v ->
|
||||
| key == "lastRunning" = parseval parsePOSIXTime $ \v ->
|
||||
status { lastRunning = Just v }
|
||||
| key == "scanComplete" = parseval readish $ \v ->
|
||||
status { scanComplete = v }
|
||||
| key == "sanityCheckRunning" = parseval readish $ \v ->
|
||||
status { sanityCheckRunning = v }
|
||||
| key == "lastSanityCheck" = parseval readtime $ \v ->
|
||||
| key == "lastSanityCheck" = parseval parsePOSIXTime $ \v ->
|
||||
status { lastSanityCheck = Just v }
|
||||
| otherwise = status -- unparsable line
|
||||
where
|
||||
(key, value) = separate (== ':') line
|
||||
parseval parser a = maybe status a (parser value)
|
||||
readtime s = do
|
||||
d <- parseTime defaultTimeLocale "%s%Qs" s
|
||||
Just $ utcTimeToPOSIXSeconds d
|
||||
|
||||
{- Checks if a time stamp was made after the daemon was lastRunning.
|
||||
-
|
||||
|
|
|
@ -24,6 +24,7 @@ import Annex.Link
|
|||
import Logs.Location
|
||||
import Logs.Trust
|
||||
import Logs.Activity
|
||||
import Logs.TimeStamp
|
||||
import Annex.NumCopies
|
||||
import Annex.UUID
|
||||
import Utility.DataUnits
|
||||
|
@ -37,9 +38,7 @@ import Utility.PID
|
|||
import qualified Database.Fsck as FsckDb
|
||||
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Posix.Types (EpochTime)
|
||||
import System.Locale
|
||||
|
||||
cmd :: [Command]
|
||||
cmd = [withOptions fsckOptions $ command "fsck" paramPaths seek
|
||||
|
@ -476,14 +475,11 @@ getStartTime u = do
|
|||
liftIO $ catchDefaultIO Nothing $ do
|
||||
timestamp <- modificationTime <$> getFileStatus f
|
||||
let fromstatus = Just (realToFrac timestamp)
|
||||
fromfile <- readishTime <$> readFile f
|
||||
fromfile <- parsePOSIXTime <$> readFile f
|
||||
return $ if matchingtimestamp fromfile fromstatus
|
||||
then Just timestamp
|
||||
else Nothing
|
||||
where
|
||||
readishTime :: String -> Maybe POSIXTime
|
||||
readishTime s = utcTimeToPOSIXSeconds <$>
|
||||
parseTime defaultTimeLocale "%s%Qs" s
|
||||
matchingtimestamp fromfile fromstatus =
|
||||
#ifndef mingw32_HOST_OS
|
||||
fromfile == fromstatus
|
||||
|
|
|
@ -5,15 +5,19 @@
|
|||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
{-# LANGUAGE CPP #-}
|
||||
|
||||
module Command.Log where
|
||||
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.Map as M
|
||||
import qualified Data.ByteString.Lazy.Char8 as L
|
||||
import Data.Char
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
#if ! MIN_VERSION_time(1,5,0)
|
||||
import System.Locale
|
||||
import Data.Char
|
||||
#endif
|
||||
|
||||
import Common.Annex
|
||||
import Command
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
{-# LANGUAGE CPP #-}
|
||||
|
||||
{- git-annex Map log
|
||||
-
|
||||
- This is used to store a Map, in a way that can be union merged.
|
||||
|
@ -13,10 +15,9 @@ module Logs.MapLog where
|
|||
|
||||
import qualified Data.Map as M
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
|
||||
import Common
|
||||
import Logs.TimeStamp
|
||||
|
||||
data TimeStamp = Unknown | Date POSIXTime
|
||||
deriving (Eq, Ord, Show)
|
||||
|
@ -42,7 +43,7 @@ parseMapLog fieldparser valueparser = M.fromListWith best . mapMaybe parse . lin
|
|||
parse line = do
|
||||
let (ts, rest) = splitword line
|
||||
(sf, sv) = splitword rest
|
||||
date <- Date . utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts
|
||||
date <- Date <$> parsePOSIXTime ts
|
||||
f <- fieldparser sf
|
||||
v <- valueparser sv
|
||||
Just (f, LogEntry date v)
|
||||
|
|
|
@ -8,11 +8,10 @@
|
|||
module Logs.Presence.Pure where
|
||||
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
import qualified Data.Map as M
|
||||
|
||||
import Common.Annex
|
||||
import Logs.TimeStamp
|
||||
import Utility.QuickCheck
|
||||
|
||||
data LogLine = LogLine {
|
||||
|
@ -29,7 +28,7 @@ parseLog :: String -> [LogLine]
|
|||
parseLog = mapMaybe parseline . lines
|
||||
where
|
||||
parseline l = LogLine
|
||||
<$> (utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" d)
|
||||
<$> parsePOSIXTime d
|
||||
<*> parseStatus s
|
||||
<*> pure rest
|
||||
where
|
||||
|
|
|
@ -15,11 +15,10 @@ module Logs.SingleValue where
|
|||
|
||||
import Common.Annex
|
||||
import qualified Annex.Branch
|
||||
import Logs.TimeStamp
|
||||
|
||||
import qualified Data.Set as S
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
|
||||
class SingleValueSerializable v where
|
||||
serialize :: v -> String
|
||||
|
@ -42,7 +41,7 @@ parseLog = S.fromList . mapMaybe parse . lines
|
|||
where
|
||||
parse line = do
|
||||
let (ts, s) = splitword line
|
||||
date <- utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts
|
||||
date <- parsePOSIXTime ts
|
||||
v <- deserialize s
|
||||
Just (LogEntry date v)
|
||||
splitword = separate (== ' ')
|
||||
|
|
|
@ -18,11 +18,10 @@ import Utility.Percentage
|
|||
import Utility.QuickCheck
|
||||
import Utility.PID
|
||||
import Utility.LockFile
|
||||
import Logs.TimeStamp
|
||||
|
||||
import Data.Time.Clock
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
import Control.Concurrent
|
||||
|
||||
{- Enough information to uniquely identify a transfer, used as the filename
|
||||
|
@ -276,10 +275,6 @@ readTransferInfo mpid s = TransferInfo
|
|||
then Just <$> readish =<< headMaybe (drop 1 bits)
|
||||
else pure Nothing -- not failure
|
||||
|
||||
parsePOSIXTime :: String -> Maybe POSIXTime
|
||||
parsePOSIXTime s = utcTimeToPOSIXSeconds
|
||||
<$> parseTime defaultTimeLocale "%s%Qs" s
|
||||
|
||||
{- The directory holding transfer information files for a given Direction. -}
|
||||
transferDir :: Direction -> Git.Repo -> FilePath
|
||||
transferDir direction r = gitAnnexTransferDir r </> showLcDirection direction
|
||||
|
|
|
@ -15,11 +15,10 @@
|
|||
module Logs.Transitions where
|
||||
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
import qualified Data.Set as S
|
||||
|
||||
import Common.Annex
|
||||
import Logs.TimeStamp
|
||||
|
||||
transitionsLog :: FilePath
|
||||
transitionsLog = "transitions.log"
|
||||
|
@ -66,12 +65,13 @@ showTransitionLine :: TransitionLine -> String
|
|||
showTransitionLine (TransitionLine ts t) = unwords [show t, show ts]
|
||||
|
||||
parseTransitionLine :: String -> Maybe TransitionLine
|
||||
parseTransitionLine s = TransitionLine <$> pdate ds <*> readish ts
|
||||
parseTransitionLine s = TransitionLine
|
||||
<$> parsePOSIXTime ds
|
||||
<*> readish ts
|
||||
where
|
||||
ws = words s
|
||||
ts = Prelude.head ws
|
||||
ds = unwords $ Prelude.tail ws
|
||||
pdate = utcTimeToPOSIXSeconds <$$> parseTime defaultTimeLocale "%s%Qs"
|
||||
|
||||
combineTransitions :: [Transitions] -> Transitions
|
||||
combineTransitions = S.unions
|
||||
|
|
|
@ -30,12 +30,11 @@ module Logs.UUIDBased (
|
|||
|
||||
import qualified Data.Map as M
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
|
||||
import Common
|
||||
import Types.UUID
|
||||
import Logs.MapLog
|
||||
import Logs.TimeStamp
|
||||
|
||||
type Log v = MapLog UUID v
|
||||
|
||||
|
@ -73,9 +72,9 @@ parseLogWithUUID parser = M.fromListWith best . mapMaybe parse . lines
|
|||
info
|
||||
| ts == Unknown = drop 1 ws
|
||||
| otherwise = drop 1 $ beginning ws
|
||||
pdate s = case parseTime defaultTimeLocale "%s%Qs" s of
|
||||
pdate s = case parsePOSIXTime s of
|
||||
Nothing -> Unknown
|
||||
Just d -> Date $ utcTimeToPOSIXSeconds d
|
||||
Just d -> Date d
|
||||
|
||||
showLogNew :: (v -> String) -> Log v -> String
|
||||
showLogNew = showMapLog fromUUID
|
||||
|
|
|
@ -32,12 +32,12 @@ import qualified Data.Map as M
|
|||
import qualified Data.Set as S
|
||||
import Data.Time.Clock.POSIX
|
||||
import Data.Time
|
||||
import System.Locale
|
||||
|
||||
import Common.Annex
|
||||
import qualified Annex
|
||||
import Types.Key
|
||||
import Utility.Tmp
|
||||
import Logs.TimeStamp
|
||||
|
||||
-- everything that is stored in the unused log
|
||||
type UnusedLog = M.Map Key (Int, Maybe POSIXTime)
|
||||
|
@ -81,7 +81,7 @@ readUnusedLog prefix = do
|
|||
, return M.empty
|
||||
)
|
||||
where
|
||||
parse line = case (readish sint, file2key skey, utcTimeToPOSIXSeconds <$> parseTime defaultTimeLocale "%s%Qs" ts) of
|
||||
parse line = case (readish sint, file2key skey, parsePOSIXTime ts) of
|
||||
(Just int, Just key, mtimestamp) -> Just (key, (int, mtimestamp))
|
||||
_ -> Nothing
|
||||
where
|
||||
|
|
Loading…
Add table
Reference in a new issue