module CmdLine.GitAnnex.Options where
+import Control.Monad.Fail as Fail ( MonadFail(..) )
import Options.Applicative
import qualified Data.Map as M
<> help "operate on all versions of all files"
)
-parseKey :: Monad m => String -> m Key
-parseKey = maybe (fail "invalid key") return . deserializeKey
+parseKey :: MonadFail m => String -> m Key
+parseKey = maybe (Fail.fail "invalid key") return . deserializeKey
-- Options to match properties of annexed files.
annexedMatchingOptions :: [GlobalOption]
import qualified Remote
import Utility.HumanTime
+import Control.Monad.Fail as Fail ( MonadFail(..) )
import Data.Time.Clock.POSIX
import qualified Data.Map as M
Nothing -> giveup $ "bad expire time: " ++ s
Just d -> Just (now - durationToPOSIXTime d)
-parseActivity :: Monad m => String -> m Activity
+parseActivity :: MonadFail m => String -> m Activity
parseActivity s = case readish s of
- Nothing -> fail $ "Unknown activity. Choose from: " ++
+ Nothing -> Fail.fail $ "Unknown activity. Choose from: " ++
unwords (map show [minBound..maxBound :: Activity])
Just v -> return v
import Types.RepoVersion
import qualified Annex.SpecialRemote
+import Control.Monad.Fail as Fail ( MonadFail(..) )
import qualified Data.Map as M
cmd :: Command
<> help "Override default annex.version"
))
-parseRepoVersion :: Monad m => String -> m RepoVersion
+parseRepoVersion :: MonadFail m => String -> m RepoVersion
parseRepoVersion s = case RepoVersion <$> readish s of
- Nothing -> fail $ "version parse error"
+ Nothing -> Fail.fail $ "version parse error"
Just v
| v `elem` supportedVersions -> return v
| otherwise -> case M.lookup v autoUpgradeableVersions of
Just v' -> return v'
- Nothing -> fail $ s ++ " is not a currently supported repository version"
+ Nothing -> Fail.fail $ s ++ " is not a currently supported repository version"
seek :: InitOptions -> CommandSeek
seek = commandAction . start
import Utility.PartialPrelude
import Utility.QuickCheck
+import Control.Monad.Fail as Fail ( MonadFail(..) )
import qualified Data.Map as M
import Data.Time.Clock
import Data.Time.Clock.POSIX (POSIXTime)
daysToDuration i = Duration $ i * dsecs
{- Parses a human-input time duration, of the form "5h", "1m", "5h1m", etc -}
-parseDuration :: Monad m => String -> m Duration
+parseDuration :: MonadFail m => String -> m Duration
parseDuration = maybe parsefail (return . Duration) . go 0
where
go n [] = return n
u <- M.lookup c unitmap
go (n + num * u) rest
_ -> return $ n + num
- parsefail = fail "duration parse error; expected eg \"5m\" or \"1h5m\""
+ parsefail = Fail.fail "duration parse error; expected eg \"5m\" or \"1h5m\""
fromDuration :: Duration -> String
fromDuration Duration { durationSeconds = d }