orgstat 0.1.7 → 0.1.8
raw patch · 20 files changed
+65/−70 lines, 20 filesdep ~base
Dependency ranges changed: base
Files
- CHANGES.md +4/−0
- orgstat.cabal +2/−2
- src/OrgStat/Ast.hs +2/−3
- src/OrgStat/Config.hs +5/−8
- src/OrgStat/Helpers.hs +6/−5
- src/OrgStat/IO.hs +2/−2
- src/OrgStat/Logging.hs +4/−3
- src/OrgStat/Logic.hs +4/−4
- src/OrgStat/Outputs/Block.hs +1/−1
- src/OrgStat/Outputs/Class.hs +1/−1
- src/OrgStat/Outputs/Script.hs +1/−1
- src/OrgStat/Outputs/Summary.hs +1/−1
- src/OrgStat/Outputs/Timeline.hs +6/−7
- src/OrgStat/Outputs/Types.hs +6/−7
- src/OrgStat/Parser.hs +3/−5
- src/OrgStat/Scope.hs +1/−4
- src/OrgStat/Util.hs +2/−3
- src/OrgStat/WorkMonad.hs +1/−1
- src/cli/Main.hs +5/−6
- test/GlobalSpec.hs +8/−6
CHANGES.md view
@@ -1,3 +1,7 @@+0.1.8+==========+* Switched to ghc 8.8+ 0.1.7 ========== * Switch "script" output interpreter from "sh" to "/bin/env sh".
orgstat.cabal view
@@ -1,5 +1,5 @@ name: orgstat-version: 0.1.7+version: 0.1.8 synopsis: Statistics visualizer for org-mode license: GPL-3 license-file: LICENSE@@ -33,7 +33,7 @@ build-depends: aeson >= 0.11.2.0 , attoparsec , ansi-terminal- , base >=4.11 && <4.12+ , base >=4.13 && <4.14 , boxes >= 0.1.4 , bytestring , colour >= 2.3.3
src/OrgStat/Ast.hs view
@@ -1,5 +1,4 @@-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RankNTypes, TemplateHaskell #-} -- | Abstract syntax tree for org. @@ -22,7 +21,7 @@ ) where import Control.Lens (ASetter', makeLenses)-import Data.Time (LocalTime, NominalDiffTime, diffUTCTime, localTimeToUTC, localTimeToUTC, utc)+import Data.Time (LocalTime, NominalDiffTime, diffUTCTime, localTimeToUTC, utc) import Universum
src/OrgStat/Config.hs view
@@ -1,6 +1,4 @@-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE RecordWildCards, TemplateHaskell, TypeApplications #-} {-# OPTIONS_GHC -Wno-orphans #-} -- | Configuration file types, together with json instances.@@ -16,17 +14,16 @@ , OrgStatConfig (..) ) where -import Data.Aeson (FromJSON (..), Value (Object, String), withObject, withText, (.!=), (.:), (.:?))+import Data.Aeson (FromJSON(..), Value(Object, String), withObject, withText, (.!=), (.:), (.:?)) import Data.Aeson.Types (typeMismatch)-import Data.List.NonEmpty (NonEmpty) import qualified Data.Text as T import Data.Time (LocalTime) import Data.Time.Format (defaultTimeLocale, parseTimeM) import Universum -import OrgStat.Outputs.Types (BlockParams (..), ScriptParams (..), SummaryParams (..),- TimelineParams (..))-import OrgStat.Scope (AstPath (..), ScopeModifier (..))+import OrgStat.Outputs.Types+ (BlockParams(..), ScriptParams(..), SummaryParams(..), TimelineParams(..))+import OrgStat.Scope (AstPath(..), ScopeModifier(..)) import OrgStat.Util (parseColour) -- | Exception type for everything bad that happens with config,
src/OrgStat/Helpers.hs view
@@ -12,14 +12,15 @@ import Control.Lens (at, views, (.=)) import qualified Data.List.NonEmpty as NE-import Data.Time (LocalTime (..), TimeOfDay (..), addDays, getZonedTime, toGregorian,- zonedTimeToLocalTime)+import Data.Time+ (LocalTime(..), TimeOfDay(..), addDays, getZonedTime, toGregorian, zonedTimeToLocalTime) import Data.Time.Calendar (addGregorianMonthsRollOver) import Data.Time.Calendar.WeekDate (toWeekDate) -import OrgStat.Ast (Org (..), cutFromTo, mergeClocks, orgTitle)-import OrgStat.Config (ConfDate (..), ConfOutput (..), ConfRange (..), ConfReport (..),- ConfScope (..), ConfigException (..), OrgStatConfig (..))+import OrgStat.Ast (Org(..), cutFromTo, mergeClocks, orgTitle)+import OrgStat.Config+ (ConfDate(..), ConfOutput(..), ConfRange(..), ConfReport(..), ConfScope(..), ConfigException(..),+ OrgStatConfig(..)) import OrgStat.IO (readOrgFile) import OrgStat.Scope (applyModifiers) import OrgStat.WorkMonad (WorkM, wcConfig, wdReadFiles, wdResolvedReports, wdResolvedScopes)
src/OrgStat/IO.hs view
@@ -16,10 +16,10 @@ import Data.Yaml (decodeEither') import System.Directory (doesFileExist) import System.FilePath (takeBaseName, takeExtension)-import Turtle (ExitCode (..), procStrict)+import Turtle (ExitCode(..), procStrict) import OrgStat.Ast (Org)-import OrgStat.Config (ConfigException (ConfigParseException), OrgStatConfig)+import OrgStat.Config (ConfigException(ConfigParseException), OrgStatConfig) import OrgStat.Logging import OrgStat.Parser (runParser) import OrgStat.Util (dropEnd)
src/OrgStat/Logging.hs view
@@ -18,11 +18,12 @@ import Control.Concurrent.MVar (modifyMVar_, withMVar) import qualified Data.Text as T-import Data.Time.Clock (UTCTime (..), getCurrentTime)+import Data.Time.Clock (UTCTime(..), getCurrentTime) import Fmt (fmt, padRightF, (+|), (|+), (|++|)) import Fmt.Time (dateDashF, hmsF, subsecondF, tzNameF)-import System.Console.ANSI (Color (Blue, Green, Magenta, Red, Yellow), ColorIntensity (Vivid),- ConsoleLayer (Foreground), SGR (Reset, SetColor), setSGRCode)+import System.Console.ANSI+ (Color(Blue, Green, Magenta, Red, Yellow), ColorIntensity(Vivid), ConsoleLayer(Foreground),+ SGR(Reset, SetColor), setSGRCode) import System.IO.Unsafe (unsafePerformIO)
src/OrgStat/Logic.hs view
@@ -15,12 +15,12 @@ import System.FilePath ((</>)) import Turtle (shell) -import OrgStat.CLI (CommonArgs (..))-import OrgStat.Config (ConfOutput (..), ConfOutputType (..), OrgStatConfig (..))+import OrgStat.CLI (CommonArgs(..))+import OrgStat.Config (ConfOutput(..), ConfOutputType(..), OrgStatConfig(..)) import OrgStat.Helpers (resolveOutput, resolveReport) import OrgStat.Logging (logDebug, logInfo)-import OrgStat.Outputs (genBlockOutput, genSummaryOutput, processScriptOutput, processTimeline,- writeReport)+import OrgStat.Outputs+ (genBlockOutput, genSummaryOutput, processScriptOutput, processTimeline, writeReport) import OrgStat.WorkMonad (WorkM, wcCommonArgs, wcConfig) -- | Main application logic.
src/OrgStat/Outputs/Block.hs view
@@ -12,7 +12,7 @@ import Text.PrettyPrint.Boxes (center1, hsep, left, render, right, text, vcat) import OrgStat.Ast (Org, filterHasClock, orgSubtrees, orgTitle, orgTotalDuration)-import OrgStat.Outputs.Types (BlockOutput (..), BlockParams (..))+import OrgStat.Outputs.Types (BlockOutput(..), BlockParams(..)) import OrgStat.Util (dropEnd, timeF) data BlockFrames = BlockFrames
src/OrgStat/Outputs/Class.hs view
@@ -11,7 +11,7 @@ import qualified Diagrams.Prelude as D import System.FilePath (replaceExtension) -import OrgStat.Outputs.Types (BlockOutput (..), SummaryOutput (..), TimelineOutput (..))+import OrgStat.Outputs.Types (BlockOutput(..), SummaryOutput(..), TimelineOutput(..)) -- | Things that reporters output an what we can do with them. class ReportOutput a where
src/OrgStat/Outputs/Script.hs view
@@ -16,7 +16,7 @@ import OrgStat.Config (confReports, crName) import OrgStat.Helpers (resolveReport) import OrgStat.Logging-import OrgStat.Outputs.Types (ScriptParams (..))+import OrgStat.Outputs.Types (ScriptParams(..)) import OrgStat.Util (timeF) import OrgStat.WorkMonad (WorkM, wcConfig)
src/OrgStat/Outputs/Summary.hs view
@@ -12,7 +12,7 @@ import OrgStat.Ast (filterHasClock, orgTotalDuration) import OrgStat.Config (confReports, crName) import OrgStat.Helpers (resolveReport)-import OrgStat.Outputs.Types (SummaryOutput (..), SummaryParams (..))+import OrgStat.Outputs.Types (SummaryOutput(..), SummaryParams(..)) import OrgStat.Util (timeF) import OrgStat.WorkMonad (WorkM, wcConfig)
src/OrgStat/Outputs/Timeline.hs view
@@ -1,6 +1,4 @@-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RankNTypes, ScopedTypeVariables, TemplateHaskell #-} -- | Timeline reporting output. Prouces a svg with columns. @@ -11,16 +9,17 @@ import Data.Colour.CIE (luminance) import Data.List (lookup, nub) import qualified Data.Text as T-import Data.Time (Day, DiffTime, LocalTime (..), defaultTimeLocale, formatTime, timeOfDayToTime)+import Data.Time (Day, DiffTime, LocalTime(..), defaultTimeLocale, formatTime, timeOfDayToTime) import Diagrams.Backend.SVG (B) import qualified Diagrams.Prelude as D import qualified Prelude import Text.Printf (printf) import Universum -import OrgStat.Ast (Clock (..), Org (..), orgClocks, traverseTree)-import OrgStat.Outputs.Types (TimelineOutput (..), TimelineParams, tpBackground, tpColorSalt,- tpColumnHeight, tpColumnWidth, tpLegend, tpTopDay)+import OrgStat.Ast (Clock(..), Org(..), orgClocks, traverseTree)+import OrgStat.Outputs.Types+ (TimelineOutput(..), TimelineParams, tpBackground, tpColorSalt, tpColumnHeight, tpColumnWidth,+ tpLegend, tpTopDay) import OrgStat.Util (addLocalTime, hashColour)
src/OrgStat/Outputs/Types.hs view
@@ -1,5 +1,4 @@-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE RankNTypes, TemplateHaskell #-} -- | Types common among reports. module OrgStat.Outputs.Types@@ -23,13 +22,13 @@ , BlockOutput (..) ) where -import Universum+import Universum -import Control.Lens (makeLenses)+import Control.Lens (makeLenses) -import Data.Default (Default (..))-import Diagrams.Backend.SVG (B)-import qualified Diagrams.Prelude as D+import Data.Default (Default(..))+import Diagrams.Backend.SVG (B)+import qualified Diagrams.Prelude as D ---------------------------------------------------------------------------- -- Timeline
src/OrgStat/Parser.hs view
@@ -8,23 +8,21 @@ import Universum -import Control.Exception (Exception) import qualified Data.Attoparsec.Text as A import Data.Char (isSpace) import qualified Data.OrgMode.Parse as O import qualified Data.OrgMode.Types as O import qualified Data.Text as T-import Data.Time (LocalTime (..), TimeOfDay (..), fromGregorian, getZonedTime, zonedTimeToLocalTime)+import Data.Time (LocalTime(..), TimeOfDay(..), fromGregorian, getZonedTime, zonedTimeToLocalTime) import Data.Time.Calendar () -import OrgStat.Ast (Clock (..), Org (..), orgTags, traverseTree)+import OrgStat.Ast (Clock(..), Org(..), orgTags, traverseTree) ---------------------------------------------------------------------------- -- Exceptions ---------------------------------------------------------------------------- -data ParsingException =- ParsingException Text+data ParsingException = ParsingException Text deriving (Show, Typeable) instance Exception ParsingException
src/OrgStat/Scope.hs view
@@ -1,7 +1,4 @@-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE DeriveGeneric, RankNTypes, ScopedTypeVariables, TemplateHaskell #-} -- | This module defines how report input is formed.
src/OrgStat/Util.hs view
@@ -18,11 +18,10 @@ import Data.Char (isLower, toLower) import Data.Colour (Colour) import Data.Colour.CIE (luminance)-import Data.Colour.SRGB (RGB (..), sRGB24, toSRGBBounded)-import Data.Hashable (hashWithSalt)+import Data.Colour.SRGB (RGB(..), sRGB24, toSRGBBounded) import Data.List (nub) import Data.List ((!!))-import Data.Time (LocalTime (..), NominalDiffTime, addUTCTime, localTimeToUTC, utc, utcToLocalTime)+import Data.Time (LocalTime(..), NominalDiffTime, addUTCTime, localTimeToUTC, utc, utcToLocalTime) import Universum -- | JSON/Yaml TH modifier. Each field of type "aoeuKek" turns into
src/OrgStat/WorkMonad.hs view
@@ -17,7 +17,7 @@ import Universum import Control.Lens (makeLenses)-import Data.Default (Default (def))+import Data.Default (Default(def)) import OrgStat.Ast (Org) import OrgStat.CLI (CommonArgs)
src/cli/Main.hs view
@@ -1,22 +1,21 @@-{-# LANGUAGE ApplicativeDo #-}-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE ApplicativeDo, ScopedTypeVariables #-} module Main where import Universum import Data.Version (showVersion)-import Options.Applicative.Simple (Parser, help, long, metavar, simpleOptions, strOption, switch,- value)+import Options.Applicative.Simple+ (Parser, help, long, metavar, simpleOptions, strOption, switch, value) import Paths_orgstat (version) import System.Directory (getHomeDirectory) import System.FilePath ((</>)) import OrgStat.CLI (CommonArgs, parseCommonArgs) import OrgStat.IO (readConfig)-import OrgStat.Logging (Severity (..), initLogging, logDebug, logError)+import OrgStat.Logging (Severity(..), initLogging, logDebug, logError) import OrgStat.Logic (runOrgStat)-import OrgStat.WorkMonad (WorkConfig (..), runWorkM)+import OrgStat.WorkMonad (WorkConfig(..), runWorkM) data Args = Args { configPath :: !FilePath
test/GlobalSpec.hs view
@@ -7,16 +7,17 @@ import qualified Data.List as L import qualified Data.Text as T import Data.Text.Arbitrary ()-import Data.Time (LocalTime (..), TimeOfDay (..), getZonedTime, zonedTimeToLocalTime)+import Data.Time (LocalTime(..), TimeOfDay(..), getZonedTime, zonedTimeToLocalTime) import Data.Time.Calendar (addGregorianMonthsClip, fromGregorian) import Test.Hspec (Spec, describe, runIO) import Test.Hspec.QuickCheck (prop)-import Test.QuickCheck (Arbitrary (arbitrary), Gen, NonNegative (..), Positive (..), Small (..),- choose, forAll, ioProperty, oneof, (.&&.), (===), (==>))+import Test.QuickCheck+ (Arbitrary(arbitrary), Gen, NonNegative(..), Positive(..), Small(..), choose, forAll, ioProperty,+ oneof, (.&&.), (===), (==>)) import Universum -import OrgStat.Ast (Clock (..), Org (..), atDepth, mergeClocks, orgClocks)-import OrgStat.Config (ConfDate (..), ConfRange (..))+import OrgStat.Ast (Clock(..), Org(..), atDepth, mergeClocks, orgClocks)+import OrgStat.Config (ConfDate(..), ConfRange(..)) import OrgStat.Helpers (convertRange) import OrgStat.Util (addLocalTime, parseColour) @@ -43,7 +44,8 @@ instance Arbitrary Clock where arbitrary = do- [a,b] <- replicateM 2 arbitrary+ a <- arbitrary+ b <- arbitrary pure . (uncurry Clock) $ if a < b then (a,b) else (b,a) genOrgDepth :: Int -> Gen Org