arbtt 0.10.2 → 0.10.3
raw patch · 8 files changed
+47/−55 lines, 8 filesdep ~aesondep ~strictdep ~tasty-goldensetup-changed
Dependency ranges changed: aeson, strict, tasty-golden
Files
- README.md +2/−13
- Setup.hs +1/−1
- arbtt.cabal +3/−3
- categorize.cfg +1/−1
- doc/arbtt.xml +14/−27
- src/Data.hs +8/−2
- src/LeftFold.hs +6/−6
- src/TimeLog.hs +12/−2
README.md view
@@ -15,13 +15,7 @@ Installation ------------ -You can build and install this program as any other Cabalized program:-- $ runhaskell Setup.hs configure- $ runhaskell Setup.hs build- $ runhaskell Setup.hs install- -Other installation options are described in the [website](http://arbtt.nomeata.de/#install).+See <http://arbtt.nomeata.de/#install> You also need to make sure that `arbtt-capture` is started with your X session:@@ -32,7 +26,7 @@ - If you use macOS, you can use `launchd` for this. Create a `.plist` file like the following (with the path changed to match where arbtt-capture is located in your system):- + ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">@@ -74,11 +68,6 @@ latest source at the git repository at <https://github.com/nomeata/arbtt> or <https://bitbucket.org/nomeata/arbtt>.--User and Developer discussion happens on the arbtt mailing list:- arbtt@lists.nomeata.de-To subscribe to the list, visit:- <http://lists.nomeata.de/mailman/listinfo/arbtt> The issue tracker is hosted on bitbucket: <https://bitbucket.org/nomeata/arbtt/issues>
Setup.hs view
@@ -23,7 +23,7 @@ "creation of the windows setup executable." Just configuredProg -> do writeFile includeFilename $ "AppVerName=" ++ display (package pd) ++ "\n"- rawSystemProgram verb configuredProg+ runProgram verb configuredProg ["/Odist","/F"++setupFilename,"setup.iss"] removeFile includeFilename where verb = fromFlag (buildVerbosity flags)
arbtt.cabal view
@@ -1,5 +1,5 @@ name: arbtt-version: 0.10.2+version: 0.10.3 license: GPL-2 license-file: LICENSE category: Desktop@@ -63,6 +63,7 @@ LeftFold LockFile DumpFormat+ Paths_arbtt ghc-options: -rtsopts @@ -285,11 +286,10 @@ Text.Parsec.ExprFail Text.Regex.PCRE.Light.Text TimeLog- Paths_arbtt Build-depends: base >= 4.7 && < 5 , tasty >= 0.7 && < 1.3- , tasty-golden >= 2.2.0.2 && < 2.4+ , tasty-golden >= 2.2.0.2 && <= 2.3.3.2 , tasty-hunit >= 0.2 && < 0.11 , process-extras >= 0.2 && < 0.8 , deepseq
categorize.cfg view
@@ -113,7 +113,7 @@ -- “format $date” produces a string with the date in ISO 8601 format -- (YYYY-MM-DD), it may be compared with strings. For example, to match -- everything on and after a particular date I can use-format $date =~ ".*-03-19" ==> tag period:on_a_special_day,+format $date =~ /.*-03-19/ ==> tag period:on_a_special_day, -- but note that this is a rather expensive operation and will slow down your -- data processing considerably.
doc/arbtt.xml view
@@ -96,29 +96,11 @@ <sect1 id="installation"> <title>Installation</title>- <sect2>- <title>Building with <command>cabal-install</command></title>- <para>- arbtt comes in the form of a Cabalized<footnote><para>Cabal is the common software- packaging for Haskell programs and libraries, see <ulink- url="http://www.haskell.org/cabal/"/>.</para></footnote> package, and is- available from hackage. The easiest way of obtaining and installing arbtt is- via <command>cabal-install</command>. If you have- <command>cabal-install</command> available, just run- <screen>$ cabal install arbtt</screen>- to download, build and install arbtt.- </para>- </sect2> <sect2>- <title>Building without <command>cabal-install</command></title>+ <title>Obtaining arbtt</title>> <para>- You can fetch the latest arbtt source tarball from hackage, at- <ulink url="http://hackage.haskell.org/package/arbtt"/>. Extract the tarball- and run the following commands to build and install the arbtt binaries:- <screen>$ runhaskell Setup.hs configure-$ runhaskell Setup.hs build-$ runhaskell Setup.hs install</screen>+ See the project website <ulink url="http://arbtt.nomeata.de/#install">for installation instructions</ulink>. </para> </sect2> @@ -322,7 +304,7 @@ <literal>></literal> operators. String expressions (<literal>$program</literal>, <literal>$title</literal>) can be matched against regular expressions with <literal>=~</literal> operator. With these- operatorions, the right hand side can be a comma-separated list of+ operators, the right hand side can be a comma-separated list of literals enclosed in square brackets (<literal>[</literal> <emphasis>...</emphasis>, <emphasis>...</emphasis>, <literal>]</literal>), which succeeds if any of them succeeds.@@ -808,7 +790,6 @@ ( ) urxvt: /home/gwern; 2014-09-03 13:42:17 history 1 | cut --delimiter=' ' --fields=5- ( ) urxvt: /home/gwern; 2014-09-03 13:12:21 git log -p .emacs (*) emacs: emacs@elan-( ) urxvt: /home/gwern; 2014-09-01 14:50:30 while true; do cd ~/ && getmail_fetch --ssl pop.gmail.com gwern0 'ugaozoumbhwcijxb' ./mail/; done ( ) urxvt: /home/gwern/blackmarket-mirrors/silkroad2-forums; 2014-08-31 23:20:10 mv /home/gwern/cookies.txt ./; http_proxy="localhost:8118" wget... ( ) urxvt: /home/gwern/blackmarket-mirrors/agora; 2014-08-31 23:15:50 mv /home/gwern/cookies.txt ./; http_proxy="localhost:8118" wget --mirror ... ( ) urxvt: /home/gwern/blackmarket-mirrors/evolution-forums; 2014-08-31 23:04:10 mv ~/cookies.txt ./; http_proxy="localhost:8118" wget --mirror ...@@ -1765,11 +1746,6 @@ arbtt is Copyright © 2009-2010 Joachim Breitner </para> - <para>- arbtt does not have a bug tracker yet. If you have bug reports, suggestions- or questions, please send an email to the arbtt mailing list at <ulink url="mailto:arbtt@lists.nomeata.de">arbtt@lists.nomeata.de</ulink>, which you can subscribe at <ulink url="http://lists.nomeata.de/mailman/listinfo/arbtt">http://lists.nomeata.de/mailman/listinfo/arbtt</ulink>.- </para>- <sect2> <title>arbtt License</title> <para>@@ -1797,6 +1773,17 @@ <para> The version history with changes relevant for the user is documented here. </para>++ <sect2 id="release-notes-0.10.3">+ <title>Version 0.10.3</title>+ <itemizedlist>+ <listitem>+ <para>+ Fix build issues with Cabal.+ </para>+ </listitem>+ </itemizedlist>+ </sect2> <sect2 id="release-notes-0.10.2"> <title>Version 0.10.2</title>
src/Data.hs view
@@ -76,6 +76,10 @@ -- Data.Binary instances +validTimeLogEntryTag :: Word8 -> Bool+validTimeLogEntryTag 1 = True+validTimeLogEntryTag _ = False+ instance StringReferencingBinary a => StringReferencingBinary (TimeLogEntry a) where ls_put strs tle = do -- A version tag@@ -87,7 +91,8 @@ v <- getWord8 case v of 1 -> TimeLogEntry <$> get <*> get <*> ls_get strs- _ -> error $ "Unsupported TimeLogEntry version tag " ++ show v+ _ -> error $ "Unsupported TimeLogEntry version tag " ++ show v ++ "\n" +++ "You can try to recover your data using arbtt-recover." instance Binary UTCTime where put (UTCTime (ModifiedJulianDay d) t) = do@@ -117,7 +122,8 @@ 1 -> CaptureData <$> get <*> get <*> pure "" 2 -> CaptureData <$> ls_get strs <*> ls_get strs <*> pure "" 3 -> CaptureData <$> ls_get strs <*> ls_get strs <*> ls_get strs- _ -> error $ "Unsupported CaptureData version tag " ++ show v+ _ -> error $ "Unsupported CaptureData version tag " ++ show v ++ "\n" +++ "You can try to recover your data using arbtt-recover." -- | 'getMany n' get 'n' elements in order, without blowing the stack. -- From Data.Binary
src/LeftFold.hs view
@@ -77,12 +77,12 @@ | otherwise = (S.Just x :!: po so ix) finish (S.Nothing :!: so) = fo so finish (S.Just _ :!: so) = fo (po so ix)-runOnGroups eq (LeftFold sti pi fi) (LeftFold sto po fo) = LeftFold (S.Nothing :!: sti :!: sto) go finish - where go (S.Nothing :!: si :!: so) x = (S.Just x :!: pi si x :!: so)- go (S.Just x' :!: si :!: so) x | x' `eq` x = (S.Just x :!: pi si x :!: so)- | otherwise = (S.Just x :!: pi sti x :!: po so (fi si))- finish (S.Nothing :!: si :!: so) = fo so- finish (S.Just _ :!: si :!: so) = fo (po so (fi si))+runOnGroups eq (LeftFold sti pi fi) (LeftFold sto po fo) = LeftFold (S.Nothing :!: (sti :!: sto)) go finish+ where go (S.Nothing :!: (si :!: so)) x = (S.Just x :!: (pi si x :!: so))+ go (S.Just x' :!: (si :!: so)) x | x' `eq` x = (S.Just x :!: (pi si x :!: so))+ | otherwise = (S.Just x :!: (pi sti x :!: po so (fi si)))+ finish (S.Nothing :!: (si :!: so)) = fo so+ finish (S.Just _ :!: (si :!: so)) = fo (po so (fi si)) runOnIntervals :: LeftFold x y -> LeftFold y z -> LeftFold (Bool :!: x) z runOnIntervals _ (Pure ox) = (Pure ox)
src/TimeLog.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE PatternGuards #-} module TimeLog where import Data@@ -80,12 +81,21 @@ go Nothing rest off go prev input off = do- mb <- tryGet prev input off off+ mb <- trySkip prev input off off flip (maybe (return [])) mb $ \(v,rest,off') -> if BS.null rest then return [v] else (v:) <$> (unsafeInterleaveIO $ go (Just (tlData v)) rest off') + trySkip prev input off orig_off+ | Just i <- BS.findIndex validTimeLogEntryTag input = do+ when (i > 0) $ do+ putStrLn $ "At position " ++ show off ++ " skipping " ++ show i ++ " bytes to next valid TimeLogEntry tag"+ tryGet prev (BS.drop i input) (off + i) orig_off+ | otherwise = do+ putStrLn "No valid TimeLogEntry tag bytes remaining"+ return Nothing+ tryGet prev input off orig_off = catch ( do -- putStrLn $ "Trying value at offset " ++ show off let (v,rest,off') = runGetState (ls_get strs) input off@@ -100,7 +110,7 @@ if BS.length input <= 1 then do putStrLn $ "End of file reached" return Nothing- else do tryGet prev (BS.tail input) (off+1) orig_off+ else do trySkip prev (BS.tail input) (off+1) orig_off ) where strs = maybe [] listOfStrings prev