aboutsummaryrefslogtreecommitdiff
path: root/Messages
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2017-05-15 23:32:17 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2017-05-16 01:03:52 -0400
commit4dc2000f97236089a8613cc6b0bf9846fea6abfa (patch)
tree83df60ef702246b0b71bc99e141d4a8bf1990438 /Messages
parent973180b077e60b5d12d7c57d926878d11d7f2105 (diff)
adeiu, MissingH
Removed dependency on MissingH, instead depending on the split library. After laying groundwork for this since 2015, it was mostly straightforward. Added Utility.Tuple and Utility.Split. Eyeballed System.Path.WildMatch while implementing the same thing. Since MissingH's progress meter display was being used, I re-implemented my own. Bonus: Now progress is displayed for transfers of files of unknown size. This commit was sponsored by Shane-o on Patreon.
Diffstat (limited to 'Messages')
-rw-r--r--Messages/Progress.hs33
1 files changed, 11 insertions, 22 deletions
diff --git a/Messages/Progress.hs b/Messages/Progress.hs
index c4f55de50..3c263c05c 100644
--- a/Messages/Progress.hs
+++ b/Messages/Progress.hs
@@ -23,34 +23,28 @@ import qualified System.Console.Regions as Regions
import qualified System.Console.Concurrent as Console
#endif
-import Data.Progress.Meter
-import Data.Progress.Tracker
-import Data.Quantity
-
{- Shows a progress meter while performing a transfer of a key.
- The action is passed a callback to use to update the meter. -}
metered :: Maybe MeterUpdate -> Key -> (MeterUpdate -> Annex a) -> Annex a
metered othermeter key a = withMessageState $ go (keySize key)
where
go _ (MessageState { outputType = QuietOutput }) = nometer
- go Nothing (MessageState { outputType = NormalOutput }) = nometer
- go (Just size) (MessageState { outputType = NormalOutput, concurrentOutputEnabled = False }) = do
+ go (msize) (MessageState { outputType = NormalOutput, concurrentOutputEnabled = False }) = do
showOutput
- (progress, meter) <- mkmeter size
- m <- liftIO $ rateLimitMeterUpdate 0.1 (Just size) $ \n -> do
- setP progress $ fromBytesProcessed n
- displayMeter stdout meter
+ meter <- liftIO $ mkMeter msize bandwidthMeter $
+ displayMeterHandle stdout
+ m <- liftIO $ rateLimitMeterUpdate 0.1 msize $
+ updateMeter meter
r <- a (combinemeter m)
- liftIO $ clearMeter stdout meter
+ liftIO $ clearMeterHandle meter stdout
return r
- go (Just size) (MessageState { outputType = NormalOutput, concurrentOutputEnabled = True }) =
+ go (msize) (MessageState { outputType = NormalOutput, concurrentOutputEnabled = True }) =
#if WITH_CONCURRENTOUTPUT
withProgressRegion $ \r -> do
- (progress, meter) <- mkmeter size
- m <- liftIO $ rateLimitMeterUpdate 0.1 (Just size) $ \n -> do
- setP progress $ fromBytesProcessed n
- s <- renderMeter meter
- Regions.setConsoleRegion r ("\n" ++ s)
+ meter <- liftIO $ mkMeter msize bandwidthMeter $ \_ s ->
+ Regions.setConsoleRegion r ('\n' : s)
+ m <- liftIO $ rateLimitMeterUpdate 0.1 msize $
+ updateMeter meter
a (combinemeter m)
#else
nometer
@@ -62,11 +56,6 @@ metered othermeter key a = withMessageState $ go (keySize key)
JSON.progress buf msize
a (combinemeter m)
- mkmeter size = do
- progress <- liftIO $ newProgress "" size
- meter <- liftIO $ newMeter progress "B" 25 (renderNums binaryOpts 1)
- return (progress, meter)
-
nometer = a $ combinemeter (const noop)
combinemeter m = case othermeter of