mirror of
https://github.com/NorfairKing/smos.git
synced 2024-10-04 04:07:15 +03:00
Rename DirectoryConfig to DirectorySettings
This commit is contained in:
parent
144cd1eebc
commit
d25c3273b2
@ -47,11 +47,11 @@ combineToInstructions c Flags {..} Environment {..} mc = do
|
||||
pure $ DispatchExport ExportSettings {..}
|
||||
settings <- do
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mc)
|
||||
(confDirectorySettingsuration <$> mc)
|
||||
let setLogLevel = fromMaybe LevelWarn $ flagLogLevel <|> envLogLevel <|> (mc >>= confLogLevel)
|
||||
pure $ Settings {..}
|
||||
pure $ Instructions dispatch settings
|
||||
|
@ -44,7 +44,7 @@ data Environment = Environment
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confLogLevel :: !(Maybe LogLevel)
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
@ -53,7 +53,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> optionalFieldOrNullWith
|
||||
"log-level"
|
||||
(bimapCodec parseLogLevel renderLogLevel codec)
|
||||
@ -77,7 +77,7 @@ data ExportSettings = ExportSettings
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Settings = Settings
|
||||
{ setDirectorySettings :: !DirectoryConfig,
|
||||
{ setDirectorySettings :: !DirectorySettings,
|
||||
setLogLevel :: !LogLevel
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
|
@ -39,7 +39,7 @@ spec = modifyMaxShrinks (const 0) $
|
||||
let settings =
|
||||
Settings
|
||||
{ setDirectorySettings =
|
||||
defaultDirectoryConfig
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
},
|
||||
setLogLevel = LevelWarn
|
||||
@ -66,7 +66,7 @@ spec = modifyMaxShrinks (const 0) $
|
||||
-- Empty smos file because then there is definitely no prompt about not-done entries
|
||||
writeSmosFile exampleProjectFile emptySmosFile
|
||||
let dc =
|
||||
defaultDirectoryConfig
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
}
|
||||
settings =
|
||||
@ -102,7 +102,7 @@ spec = modifyMaxShrinks (const 0) $
|
||||
let settings =
|
||||
Settings
|
||||
{ setDirectorySettings =
|
||||
defaultDirectoryConfig
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
},
|
||||
setLogLevel = LevelWarn
|
||||
|
@ -44,11 +44,11 @@ deriveSettings Flags {..} Environment {..} mConf = do
|
||||
let mc :: (CalendarImportConfiguration -> Maybe a) -> Maybe a
|
||||
mc func = mConf >>= confCalendarImportConfiguration >>= func
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mConf)
|
||||
(confDirectorySettingsuration <$> mConf)
|
||||
setSources <- fmap catMaybes $
|
||||
forM (maybe [] calendarImportConfSources (mConf >>= confCalendarImportConfiguration)) $ \SourceConfiguration {..} -> do
|
||||
mOriginURIString <- case sourceConfOrigin of
|
||||
|
@ -25,7 +25,7 @@ data Environment = Environment
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confCalendarImportConfiguration :: !(Maybe CalendarImportConfiguration)
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
@ -34,7 +34,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> optionalFieldOrNull "calendar" "Calendar configuration" .= confCalendarImportConfiguration
|
||||
|
||||
data CalendarImportConfiguration = CalendarImportConfiguration
|
||||
@ -87,7 +87,7 @@ instance HasCodec SourceConfiguration where
|
||||
<*> requiredField "destination" "The destination path within the workflow directory" .= sourceConfDestinationFile
|
||||
|
||||
data Settings = Settings
|
||||
{ setDirectorySettings :: !DirectoryConfig,
|
||||
{ setDirectorySettings :: !DirectorySettings,
|
||||
setLogLevel :: !LogLevel,
|
||||
setSources :: ![Source],
|
||||
setDebug :: Bool
|
||||
|
@ -6,12 +6,12 @@ import Smos.Directory.InterestingStore
|
||||
import Test.QuickCheck
|
||||
import Test.Syd.Validity
|
||||
|
||||
withInterestingStore :: (DirectoryConfig -> IO ()) -> Property
|
||||
withInterestingStore func = forAllValid $ \is -> withDirectoryConfig is func
|
||||
withInterestingStore :: (DirectorySettings -> IO ()) -> Property
|
||||
withInterestingStore func = forAllValid $ \is -> withDirectorySettings is func
|
||||
|
||||
withDirectoryConfig :: InterestingStore -> (DirectoryConfig -> IO a) -> IO a
|
||||
withDirectoryConfig is func =
|
||||
withDirectorySettings :: InterestingStore -> (DirectorySettings -> IO a) -> IO a
|
||||
withDirectorySettings is func =
|
||||
withSystemTempDir "smos-report-test" $ \tempDir -> do
|
||||
writeInterestingStore tempDir is
|
||||
let dc = defaultDirectoryConfig {directoryConfigWorkflowFileSpec = AbsoluteWorkflow tempDir}
|
||||
let dc = defaultDirectorySettings {directoryConfigWorkflowFileSpec = AbsoluteWorkflow tempDir}
|
||||
func dc
|
||||
|
@ -5,8 +5,8 @@
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
|
||||
module Smos.Directory.Config
|
||||
( DirectoryConfig (..),
|
||||
defaultDirectoryConfig,
|
||||
( DirectorySettings (..),
|
||||
defaultDirectorySettings,
|
||||
WorkflowDirSpec (..),
|
||||
defaultWorkflowDirSpec,
|
||||
resolveWorkflowDir,
|
||||
@ -30,7 +30,7 @@ import GHC.Generics (Generic)
|
||||
import Path
|
||||
import Path.IO
|
||||
|
||||
data DirectoryConfig = DirectoryConfig
|
||||
data DirectorySettings = DirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec :: !WorkflowDirSpec,
|
||||
directoryConfigArchiveFileSpec :: !ArchiveDirSpec,
|
||||
directoryConfigProjectsFileSpec :: !ProjectsDirSpec,
|
||||
@ -38,9 +38,9 @@ data DirectoryConfig = DirectoryConfig
|
||||
}
|
||||
deriving (Show, Eq, Generic)
|
||||
|
||||
defaultDirectoryConfig :: DirectoryConfig
|
||||
defaultDirectoryConfig =
|
||||
DirectoryConfig
|
||||
defaultDirectorySettings :: DirectorySettings
|
||||
defaultDirectorySettings =
|
||||
DirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = defaultWorkflowDirSpec,
|
||||
directoryConfigArchiveFileSpec = defaultArchiveDirSpec,
|
||||
directoryConfigProjectsFileSpec = defaultProjectsDirSpec,
|
||||
@ -109,21 +109,21 @@ resolveArchivedProjectsDir ad as =
|
||||
ArchivedProjectsInHome ard -> (</> ard) <$> getHomeDir
|
||||
ArchivedProjectsAbsolute aad -> pure aad
|
||||
|
||||
resolveDirWorkflowDir :: DirectoryConfig -> IO (Path Abs Dir)
|
||||
resolveDirWorkflowDir DirectoryConfig {..} = resolveWorkflowDir directoryConfigWorkflowFileSpec
|
||||
resolveDirWorkflowDir :: DirectorySettings -> IO (Path Abs Dir)
|
||||
resolveDirWorkflowDir DirectorySettings {..} = resolveWorkflowDir directoryConfigWorkflowFileSpec
|
||||
|
||||
resolveDirArchiveDir :: DirectoryConfig -> IO (Path Abs Dir)
|
||||
resolveDirArchiveDir DirectoryConfig {..} = do
|
||||
resolveDirArchiveDir :: DirectorySettings -> IO (Path Abs Dir)
|
||||
resolveDirArchiveDir DirectorySettings {..} = do
|
||||
wd <- resolveWorkflowDir directoryConfigWorkflowFileSpec
|
||||
resolveArchiveDir wd directoryConfigArchiveFileSpec
|
||||
|
||||
resolveDirProjectsDir :: DirectoryConfig -> IO (Path Abs Dir)
|
||||
resolveDirProjectsDir DirectoryConfig {..} = do
|
||||
resolveDirProjectsDir :: DirectorySettings -> IO (Path Abs Dir)
|
||||
resolveDirProjectsDir DirectorySettings {..} = do
|
||||
wd <- resolveWorkflowDir directoryConfigWorkflowFileSpec
|
||||
resolveProjectsDir wd directoryConfigProjectsFileSpec
|
||||
|
||||
resolveDirArchivedProjectsDir :: DirectoryConfig -> IO (Path Abs Dir)
|
||||
resolveDirArchivedProjectsDir DirectoryConfig {..} = do
|
||||
resolveDirArchivedProjectsDir :: DirectorySettings -> IO (Path Abs Dir)
|
||||
resolveDirArchivedProjectsDir DirectorySettings {..} = do
|
||||
wd <- resolveWorkflowDir directoryConfigWorkflowFileSpec
|
||||
ad <- resolveArchiveDir wd directoryConfigArchiveFileSpec
|
||||
resolveArchivedProjectsDir ad directoryConfigArchivedProjectsFileSpec
|
||||
|
@ -17,8 +17,8 @@ import Path.IO
|
||||
import Smos.Directory.Config
|
||||
import Smos.Directory.OptParse.Types
|
||||
|
||||
combineToDirectoryConfig :: DirectoryConfig -> DirectoryFlags -> DirectoryEnvironment -> Maybe DirectoryConfiguration -> IO DirectoryConfig
|
||||
combineToDirectoryConfig dc DirectoryFlags {..} DirectoryEnvironment {..} mc = do
|
||||
combineToDirectorySettings :: DirectorySettings -> DirectoryFlags -> DirectoryEnvironment -> Maybe DirectorySettingsuration -> IO DirectorySettings
|
||||
combineToDirectorySettings dc DirectoryFlags {..} DirectoryEnvironment {..} mc = do
|
||||
wfs <-
|
||||
case msum [dirFlagWorkflowDir, dirEnvWorkflowDir, mc >>= (fmap T.unpack . directoryConfWorkflowDir)] of
|
||||
Nothing -> pure $ directoryConfigWorkflowFileSpec dc
|
||||
|
@ -40,40 +40,40 @@ data DirectoryEnvironment = DirectoryEnvironment
|
||||
}
|
||||
deriving (Show, Eq, Generic)
|
||||
|
||||
data DirectoryConfiguration = DirectoryConfiguration
|
||||
data DirectorySettingsuration = DirectorySettingsuration
|
||||
{ directoryConfWorkflowDir :: !(Maybe Text),
|
||||
directoryConfArchiveDir :: !(Maybe Text),
|
||||
directoryConfProjectsDir :: !(Maybe Text),
|
||||
directoryConfArchivedProjectsDir :: !(Maybe Text)
|
||||
}
|
||||
deriving stock (Show, Eq, Generic)
|
||||
deriving (ToJSON, FromJSON) via (Autodocodec DirectoryConfiguration)
|
||||
deriving (ToJSON, FromJSON) via (Autodocodec DirectorySettingsuration)
|
||||
|
||||
instance Validity DirectoryConfiguration
|
||||
instance Validity DirectorySettingsuration
|
||||
|
||||
instance HasCodec DirectoryConfiguration where
|
||||
codec = object "DirectoryConfiguration" objectCodec
|
||||
instance HasCodec DirectorySettingsuration where
|
||||
codec = object "DirectorySettingsuration" objectCodec
|
||||
|
||||
instance HasObjectCodec DirectoryConfiguration where
|
||||
instance HasObjectCodec DirectorySettingsuration where
|
||||
objectCodec =
|
||||
DirectoryConfiguration
|
||||
DirectorySettingsuration
|
||||
<$> optionalFieldOrNull "workflow-dir" "The workflow directory" .= directoryConfWorkflowDir
|
||||
<*> optionalFieldOrNull "archive-dir" "The archive directory" .= directoryConfArchiveDir
|
||||
<*> optionalFieldOrNull "projects-dir" "The projects directory" .= directoryConfProjectsDir
|
||||
<*> optionalFieldOrNull "archived-projects-dir" "The archived projects directory" .= directoryConfArchivedProjectsDir
|
||||
|
||||
defaultDirectoryConfiguration :: DirectoryConfiguration
|
||||
defaultDirectoryConfiguration =
|
||||
DirectoryConfiguration
|
||||
defaultDirectorySettingsuration :: DirectorySettingsuration
|
||||
defaultDirectorySettingsuration =
|
||||
DirectorySettingsuration
|
||||
{ directoryConfWorkflowDir = Nothing,
|
||||
directoryConfArchiveDir = Nothing,
|
||||
directoryConfProjectsDir = Nothing,
|
||||
directoryConfArchivedProjectsDir = Nothing
|
||||
}
|
||||
|
||||
backToDirectoryConfiguration :: DirectoryConfig -> DirectoryConfiguration
|
||||
backToDirectoryConfiguration DirectoryConfig {..} =
|
||||
DirectoryConfiguration
|
||||
backToDirectorySettingsuration :: DirectorySettings -> DirectorySettingsuration
|
||||
backToDirectorySettingsuration DirectorySettings {..} =
|
||||
DirectorySettingsuration
|
||||
{ directoryConfWorkflowDir =
|
||||
if directoryConfigWorkflowFileSpec == defaultWorkflowDirSpec
|
||||
then Nothing
|
||||
|
@ -55,11 +55,11 @@ combineToInstructions cmd Flags {..} Environment {..} mc = do
|
||||
let importSetDestination = ImportDestination {..}
|
||||
pure $ DispatchImport ImportSettings {..}
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mc)
|
||||
(confDirectorySettingsuration <$> mc)
|
||||
let setColourConfig = getColourSettings (mc >>= confColourConfiguration)
|
||||
let mTok mToken mTokenFile = case mToken of
|
||||
Just token -> pure $ Just token
|
||||
|
@ -39,7 +39,7 @@ data Flags = Flags
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confColourConfiguration :: !(Maybe ColourConfiguration),
|
||||
confGitHubConfiguration :: !(Maybe GitHubConfiguration)
|
||||
}
|
||||
@ -49,7 +49,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> colourConfigurationTopLevelObjectCodec .= confColourConfiguration
|
||||
<*> optionalFieldOrNull "github" "The github tool configuration" .= confGitHubConfiguration
|
||||
|
||||
@ -98,7 +98,7 @@ data ImportDestination = ImportDestination
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Settings = Settings
|
||||
{ setDirectorySettings :: !DirectoryConfig,
|
||||
{ setDirectorySettings :: !DirectorySettings,
|
||||
setColourConfig :: !ColourSettings,
|
||||
setGitHubOauthToken :: !(Maybe Text)
|
||||
}
|
||||
|
@ -41,11 +41,11 @@ combineToInstructions cmd Flags {..} Environment {..} mc = do
|
||||
jhMC = (mC confJobHuntConfiguration >>=)
|
||||
let setLogLevel = fromMaybe LevelInfo $ flagLogLevel <|> envLogLevel <|> jhMC jobHuntConfLogLevel
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mc)
|
||||
(confDirectorySettingsuration <$> mc)
|
||||
pd <- resolveDirProjectsDir setDirectorySettings
|
||||
setJobHuntDirectory <- resolveDir pd $ fromMaybe "jobhunt" $ flagJobHuntDirectory <|> envJobHuntDirectory <|> jhMC jobHuntConfJobHuntDirectory
|
||||
let setGoal = flagGoal <|> envGoal <|> jhMC jobHuntConfGoal
|
||||
|
@ -72,7 +72,7 @@ data Flags = Flags
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confEmailConfiguration :: !(Maybe EmailConfiguration),
|
||||
confJobHuntConfiguration :: !(Maybe JobHuntConfiguration)
|
||||
}
|
||||
@ -82,7 +82,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> optionalFieldOrNull emailConfigurationKey "The email configuration" .= confEmailConfiguration
|
||||
<*> optionalFieldOrNull "jobhunt" "The jobhunt tool configuration" .= confJobHuntConfiguration
|
||||
|
||||
|
@ -38,11 +38,11 @@ deriveSettings Flags {..} Environment {..} mConf = do
|
||||
let mc :: (NotifyConfiguration -> Maybe a) -> Maybe a
|
||||
mc func = mConf >>= confNotifyConfiguration >>= func
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mConf)
|
||||
(confDirectorySettingsuration <$> mConf)
|
||||
setDatabase <- case flagDatabase <|> envDatabase <|> mc notifyConfDatabase of
|
||||
Just fp -> resolveFile' fp
|
||||
Nothing -> defaultDatabaseFile
|
||||
|
@ -26,7 +26,7 @@ data Environment = Environment
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confNotifyConfiguration :: !(Maybe NotifyConfiguration)
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
@ -35,7 +35,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> optionalFieldOrNull "notify" "Notification Configuration" .= confNotifyConfiguration
|
||||
|
||||
data NotifyConfiguration = NotifyConfiguration
|
||||
@ -54,7 +54,7 @@ instance HasCodec NotifyConfiguration where
|
||||
<*> optionalFieldOrNullWith "log-level" (bimapCodec parseLogLevel renderLogLevel codec) "Log level" .= notifyConfLogLevel
|
||||
|
||||
data Settings = Settings
|
||||
{ setDirectorySettings :: !DirectoryConfig,
|
||||
{ setDirectorySettings :: !DirectorySettings,
|
||||
setDatabase :: !(Path Abs File),
|
||||
setNotifySend :: !(Path Abs File),
|
||||
setLogLevel :: !LogLevel
|
||||
|
@ -27,7 +27,7 @@ makeEnvFromSettings Settings {..} =
|
||||
envOutputHandle = stdout,
|
||||
envErrorHandle = stderr,
|
||||
envColourSettings = settingColourSettings,
|
||||
envDirectoryConfig = settingDirectoryConfig
|
||||
envDirectorySettings = settingDirectorySettings
|
||||
}
|
||||
|
||||
execute :: Dispatch -> Q ()
|
||||
|
@ -25,7 +25,7 @@ smosQueryAgenda AgendaSettings {..} = do
|
||||
zone <- liftIO loadLocalTZ
|
||||
now <- liftIO getCurrentTime
|
||||
let today = localDay (utcToLocalTimeTZ zone now)
|
||||
dc <- asks envDirectoryConfig
|
||||
dc <- asks envDirectorySettings
|
||||
sp <- getShouldPrint
|
||||
report <-
|
||||
produceAgendaReport
|
||||
|
@ -14,7 +14,7 @@ import Smos.Query.Commands.Import
|
||||
|
||||
smosQueryEntry :: EntrySettings -> Q ()
|
||||
smosQueryEntry EntrySettings {..} = do
|
||||
dc <- asks envDirectoryConfig
|
||||
dc <- asks envDirectorySettings
|
||||
sp <- getShouldPrint
|
||||
report <- produceEntryReport entrySetFilter entrySetHideArchive sp entrySetProjection entrySetSorter dc
|
||||
out <- asks envOutputHandle
|
||||
|
@ -11,7 +11,7 @@ import Smos.Report.Next
|
||||
|
||||
smosQueryNext :: NextSettings -> Q ()
|
||||
smosQueryNext NextSettings {..} = do
|
||||
dc <- asks envDirectoryConfig
|
||||
dc <- asks envDirectorySettings
|
||||
sp <- getShouldPrint
|
||||
report <- liftIO $ produceNextActionReport nextSetFilter nextSetHideArchive sp dc
|
||||
colourSettings <- asks envColourSettings
|
||||
|
@ -13,7 +13,7 @@ import Smos.Report.Waiting
|
||||
|
||||
smosQueryWaiting :: WaitingSettings -> Q ()
|
||||
smosQueryWaiting WaitingSettings {..} = do
|
||||
dc <- asks envDirectoryConfig
|
||||
dc <- asks envDirectorySettings
|
||||
sp <- getShouldPrint
|
||||
report <- produceWaitingReport waitingSetFilter waitingSetHideArchive sp dc
|
||||
|
||||
|
@ -21,7 +21,7 @@ smosQueryWork WorkSettings {..} = do
|
||||
case M.lookup cn workSetContexts of
|
||||
Nothing -> dieQ $ unwords ["Context not found:", T.unpack $ contextNameText cn]
|
||||
Just cf -> pure cf
|
||||
dc <- asks envDirectoryConfig
|
||||
dc <- asks envDirectorySettings
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
pd <- liftIO $ resolveDirProjectsDir dc
|
||||
let mpd = stripProperPrefix wd pd
|
||||
|
@ -18,7 +18,7 @@ data Env = Env
|
||||
envOutputHandle :: !Handle,
|
||||
envErrorHandle :: !Handle,
|
||||
envColourSettings :: !ColourSettings,
|
||||
envDirectoryConfig :: !DirectoryConfig
|
||||
envDirectorySettings :: !DirectorySettings
|
||||
}
|
||||
deriving (Show, Eq, Generic)
|
||||
|
||||
@ -26,22 +26,22 @@ type Q = ReaderT Env IO
|
||||
|
||||
askWorkflowDir :: Q (Path Abs Dir)
|
||||
askWorkflowDir = do
|
||||
func <- asks (resolveDirWorkflowDir . envDirectoryConfig)
|
||||
func <- asks (resolveDirWorkflowDir . envDirectorySettings)
|
||||
liftIO func
|
||||
|
||||
askArchiveDir :: Q (Path Abs Dir)
|
||||
askArchiveDir = do
|
||||
func <- asks (resolveDirArchiveDir . envDirectoryConfig)
|
||||
func <- asks (resolveDirArchiveDir . envDirectorySettings)
|
||||
liftIO func
|
||||
|
||||
askProjectsDir :: Q (Path Abs Dir)
|
||||
askProjectsDir = do
|
||||
func <- asks (resolveDirProjectsDir . envDirectoryConfig)
|
||||
func <- asks (resolveDirProjectsDir . envDirectorySettings)
|
||||
liftIO func
|
||||
|
||||
askArchivedProjectsDir :: Q (Path Abs Dir)
|
||||
askArchivedProjectsDir = do
|
||||
func <- asks (resolveDirArchivedProjectsDir . envDirectoryConfig)
|
||||
func <- asks (resolveDirArchivedProjectsDir . envDirectorySettings)
|
||||
liftIO func
|
||||
|
||||
outputChunks :: [Chunk] -> Q ()
|
||||
|
@ -55,7 +55,7 @@ combineToInstructions c Flags {..} Environment {..} mc = do
|
||||
let settings =
|
||||
Settings
|
||||
{ settingColourSettings = colourSettings,
|
||||
settingDirectoryConfig = smosReportConfigDirectoryConfig src
|
||||
settingDirectorySettings = smosReportConfigDirectorySettings src
|
||||
}
|
||||
|
||||
dispatch <-
|
||||
|
@ -331,7 +331,7 @@ data OutputFormat
|
||||
deriving (Show, Eq, Generic)
|
||||
|
||||
data Settings = Settings
|
||||
{ settingDirectoryConfig :: !DirectoryConfig,
|
||||
{ settingDirectorySettings :: !DirectorySettings,
|
||||
settingColourSettings :: !ColourSettings
|
||||
}
|
||||
deriving (Show, Eq, Generic)
|
||||
|
@ -11,28 +11,28 @@ import Smos.Report.Streaming
|
||||
|
||||
streamSmosProjectsQ :: ConduitT i (Path Rel File, SmosFile) Q ()
|
||||
streamSmosProjectsQ = do
|
||||
dc <- lift $ asks envDirectoryConfig
|
||||
dc <- lift $ asks envDirectorySettings
|
||||
streamSmosProjectsFiles dc .| streamParseSmosProjects
|
||||
|
||||
streamSmosFiles :: HideArchive -> ConduitT i (Path Rel File) Q ()
|
||||
streamSmosFiles ha = do
|
||||
dc <- lift $ asks envDirectoryConfig
|
||||
dc <- lift $ asks envDirectorySettings
|
||||
streamSmosFilesFromWorkflowRel ha dc
|
||||
|
||||
streamAllSmosFiles :: ConduitT i (Path Rel File) Q ()
|
||||
streamAllSmosFiles = do
|
||||
dc <- lift $ asks envDirectoryConfig
|
||||
dc <- lift $ asks envDirectorySettings
|
||||
streamSmosFilesFromWorkflowRel Don'tHideArchive dc
|
||||
|
||||
streamParseSmosProjects :: ConduitT (Path Rel File) (Path Rel File, SmosFile) Q ()
|
||||
streamParseSmosProjects = do
|
||||
dc <- lift $ asks envDirectoryConfig
|
||||
dc <- lift $ asks envDirectorySettings
|
||||
pd <- liftIO $ resolveDirProjectsDir dc
|
||||
parseSmosFilesRel pd .| shouldPrintC
|
||||
|
||||
streamParseSmosFiles :: ConduitT (Path Rel File) (Path Rel File, SmosFile) Q ()
|
||||
streamParseSmosFiles = do
|
||||
dc <- lift $ asks envDirectoryConfig
|
||||
dc <- lift $ asks envDirectorySettings
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
parseSmosFilesRel wd .| shouldPrintC
|
||||
|
||||
|
@ -68,7 +68,7 @@ produceEntryReportCursor ::
|
||||
Maybe EntryFilter ->
|
||||
HideArchive ->
|
||||
ShouldPrint ->
|
||||
DirectoryConfig ->
|
||||
DirectorySettings ->
|
||||
m (EntryReportCursor a)
|
||||
produceEntryReportCursor func finalise mf ha sp dc = produceReport ha sp dc (entryReportCursorConduit func finalise mf)
|
||||
|
||||
|
@ -21,7 +21,7 @@ import Smos.Report.Filter
|
||||
import Smos.Report.Next
|
||||
import Smos.Report.ShouldPrint
|
||||
|
||||
produceNextActionReportCursor :: Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectoryConfig -> IO NextActionReportCursor
|
||||
produceNextActionReportCursor :: Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectorySettings -> IO NextActionReportCursor
|
||||
produceNextActionReportCursor mf ha sp dc =
|
||||
NextActionReportCursor <$> produceEntryReportCursor makeNextActionEntryCursor' id mf ha sp dc
|
||||
|
||||
|
@ -8,7 +8,7 @@ import Smos.Report.Archive
|
||||
import Smos.Report.ShouldPrint
|
||||
import Smos.Report.Streaming
|
||||
|
||||
produceReportCursorEntries :: MonadIO m => ConduitT (Path Rel File, SmosFile) a m () -> DirectoryConfig -> m [a]
|
||||
produceReportCursorEntries :: MonadIO m => ConduitT (Path Rel File, SmosFile) a m () -> DirectorySettings -> m [a]
|
||||
produceReportCursorEntries func dc = do
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
runConduit $
|
||||
|
@ -20,7 +20,7 @@ import Smos.Report.ShouldPrint
|
||||
import Smos.Report.Streaming
|
||||
import Smos.Report.Stuck
|
||||
|
||||
produceStuckReportCursor :: TZ -> ShouldPrint -> DirectoryConfig -> IO StuckReportCursor
|
||||
produceStuckReportCursor :: TZ -> ShouldPrint -> DirectorySettings -> IO StuckReportCursor
|
||||
produceStuckReportCursor zone sp dc = runConduit $ streamSmosProjects sp dc .| stuckReportCursorConduit zone
|
||||
|
||||
stuckReportCursorConduit :: Monad m => TZ -> ConduitT (Path Rel File, SmosFile) void m StuckReportCursor
|
||||
|
@ -24,7 +24,7 @@ import Smos.Report.Filter
|
||||
import Smos.Report.Period
|
||||
import Smos.Report.ShouldPrint
|
||||
|
||||
produceTimestampsReportCursor :: Day -> Period -> Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectoryConfig -> IO TimestampsReportCursor
|
||||
produceTimestampsReportCursor :: Day -> Period -> Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectorySettings -> IO TimestampsReportCursor
|
||||
produceTimestampsReportCursor today period mf ha sp dc =
|
||||
TimestampsReportCursor <$> produceEntryReportCursor (makeTimestampsEntryCursorAndFilterByPeriod today period) sortTimestampEntryCursors mf ha sp dc
|
||||
|
||||
|
@ -23,7 +23,7 @@ import Smos.Report.ShouldPrint
|
||||
import Smos.Report.Time
|
||||
import Smos.Report.Waiting
|
||||
|
||||
produceWaitingReportCursor :: Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectoryConfig -> IO WaitingReportCursor
|
||||
produceWaitingReportCursor :: Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectorySettings -> IO WaitingReportCursor
|
||||
produceWaitingReportCursor mf ha sp dc =
|
||||
WaitingReportCursor
|
||||
<$> produceEntryReportCursor makeWaitingEntryCursor' sortWaitingReport mf ha sp dc
|
||||
|
@ -30,7 +30,7 @@ import Smos.Report.Sorter
|
||||
import Smos.Report.Streaming
|
||||
import Smos.Report.Work
|
||||
|
||||
produceWorkReportCursor :: HideArchive -> ShouldPrint -> DirectoryConfig -> WorkReportContext -> IO WorkReportCursor
|
||||
produceWorkReportCursor :: HideArchive -> ShouldPrint -> DirectorySettings -> WorkReportContext -> IO WorkReportCursor
|
||||
produceWorkReportCursor ha sp dc wrc =
|
||||
produceReport ha sp dc $
|
||||
intermediateWorkReportToWorkReportCursor wrc
|
||||
|
@ -15,7 +15,7 @@ instance GenValid Configuration where
|
||||
genValid = genValidStructurallyWithoutExtraChecking
|
||||
shrinkValid = shrinkValidStructurallyWithoutExtraFiltering
|
||||
|
||||
instance GenValid DirectoryConfiguration where
|
||||
instance GenValid DirectorySettingsuration where
|
||||
genValid = genValidStructurallyWithoutExtraChecking
|
||||
shrinkValid = shrinkValidStructurallyWithoutExtraFiltering
|
||||
|
||||
|
@ -70,7 +70,7 @@ spec = do
|
||||
emptyInterestingStore
|
||||
{ workflowFiles = DF.singletonFile rf (makeSmosFile [Node e []])
|
||||
}
|
||||
in withDirectoryConfig is $ \dc -> do
|
||||
in withDirectorySettings is $ \dc -> do
|
||||
let ctx =
|
||||
WorkReportContext
|
||||
{ workReportContextTimeZone = zone,
|
||||
@ -113,7 +113,7 @@ spec = do
|
||||
emptyInterestingStore
|
||||
{ workflowFiles = DF.singletonFile rf (makeSmosFile [Node e1 [], Node e2 []])
|
||||
}
|
||||
in withDirectoryConfig is $ \dc -> do
|
||||
in withDirectorySettings is $ \dc -> do
|
||||
let ctx =
|
||||
WorkReportContext
|
||||
{ workReportContextTimeZone = zone,
|
||||
@ -157,7 +157,7 @@ spec = do
|
||||
checkFilterString = "property:timewindow"
|
||||
in case parseEntryFilter checkFilterString of
|
||||
Left err -> expectationFailure $ show err
|
||||
Right checkFilter -> withDirectoryConfig is $ \dc -> do
|
||||
Right checkFilter -> withDirectorySettings is $ \dc -> do
|
||||
let ctx =
|
||||
WorkReportContext
|
||||
{ workReportContextTimeZone = zone,
|
||||
|
@ -39,7 +39,7 @@ produceAgendaReport ::
|
||||
ShouldPrint ->
|
||||
AgendaHistoricity ->
|
||||
Maybe EntryFilter ->
|
||||
DirectoryConfig ->
|
||||
DirectorySettings ->
|
||||
m AgendaReport
|
||||
produceAgendaReport today period timeBlock ha sp h f dc = do
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
|
@ -5,8 +5,8 @@
|
||||
module Smos.Report.Config
|
||||
( SmosReportConfig (..),
|
||||
defaultReportConfig,
|
||||
DirectoryConfig (..),
|
||||
defaultDirectoryConfig,
|
||||
DirectorySettings (..),
|
||||
defaultDirectorySettings,
|
||||
WaitingReportConfig (..),
|
||||
defaultWaitingReportConfig,
|
||||
defaultWaitingThreshold,
|
||||
@ -43,7 +43,7 @@ import Smos.Report.Sorter
|
||||
import Smos.Report.Time
|
||||
|
||||
data SmosReportConfig = SmosReportConfig
|
||||
{ smosReportConfigDirectoryConfig :: !DirectoryConfig,
|
||||
{ smosReportConfigDirectorySettings :: !DirectorySettings,
|
||||
smosReportConfigWaitingConfig :: !WaitingReportConfig,
|
||||
smosReportConfigStuckConfig :: !StuckReportConfig,
|
||||
smosReportConfigWorkConfig :: !WorkReportConfig
|
||||
@ -53,7 +53,7 @@ data SmosReportConfig = SmosReportConfig
|
||||
defaultReportConfig :: SmosReportConfig
|
||||
defaultReportConfig =
|
||||
SmosReportConfig
|
||||
{ smosReportConfigDirectoryConfig = defaultDirectoryConfig,
|
||||
{ smosReportConfigDirectorySettings = defaultDirectorySettings,
|
||||
smosReportConfigWaitingConfig = defaultWaitingReportConfig,
|
||||
smosReportConfigStuckConfig = defaultStuckReportConfig,
|
||||
smosReportConfigWorkConfig = defaultWorkReportConfig
|
||||
@ -120,16 +120,16 @@ defaultStuckThreshold :: Time
|
||||
defaultStuckThreshold = Weeks 3
|
||||
|
||||
resolveReportWorkflowDir :: SmosReportConfig -> IO (Path Abs Dir)
|
||||
resolveReportWorkflowDir = resolveDirWorkflowDir . smosReportConfigDirectoryConfig
|
||||
resolveReportWorkflowDir = resolveDirWorkflowDir . smosReportConfigDirectorySettings
|
||||
|
||||
resolveReportArchiveDir :: SmosReportConfig -> IO (Path Abs Dir)
|
||||
resolveReportArchiveDir = resolveDirArchiveDir . smosReportConfigDirectoryConfig
|
||||
resolveReportArchiveDir = resolveDirArchiveDir . smosReportConfigDirectorySettings
|
||||
|
||||
resolveReportProjectsDir :: SmosReportConfig -> IO (Path Abs Dir)
|
||||
resolveReportProjectsDir = resolveDirProjectsDir . smosReportConfigDirectoryConfig
|
||||
resolveReportProjectsDir = resolveDirProjectsDir . smosReportConfigDirectorySettings
|
||||
|
||||
resolveReportArchivedProjectsDir :: SmosReportConfig -> IO (Path Abs Dir)
|
||||
resolveReportArchivedProjectsDir = resolveDirArchivedProjectsDir . smosReportConfigDirectoryConfig
|
||||
resolveReportArchivedProjectsDir = resolveDirArchivedProjectsDir . smosReportConfigDirectorySettings
|
||||
|
||||
newtype ContextName = ContextName
|
||||
{ contextNameText :: Text
|
||||
|
@ -28,7 +28,7 @@ produceEntryReport ::
|
||||
ShouldPrint ->
|
||||
NonEmpty Projection ->
|
||||
Maybe Sorter ->
|
||||
DirectoryConfig ->
|
||||
DirectorySettings ->
|
||||
m EntryReport
|
||||
produceEntryReport ef ha sp p s dc = produceReport ha sp dc (entryReportConduit ef p s)
|
||||
|
||||
|
@ -23,7 +23,7 @@ import Smos.Report.Filter
|
||||
import Smos.Report.ShouldPrint
|
||||
import Smos.Report.Streaming
|
||||
|
||||
produceNextActionReport :: MonadIO m => Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectoryConfig -> m NextActionReport
|
||||
produceNextActionReport :: MonadIO m => Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectorySettings -> m NextActionReport
|
||||
produceNextActionReport ef ha sp dc = produceReport ha sp dc (nextActionReportConduit ef)
|
||||
|
||||
nextActionReportConduit :: Monad m => Maybe EntryFilter -> ConduitT (Path Rel File, SmosFile) void m NextActionReport
|
||||
|
@ -34,7 +34,7 @@ import Smos.Report.TimeBlock
|
||||
combineToConfig ::
|
||||
SmosReportConfig -> Flags -> Environment -> Maybe Configuration -> IO SmosReportConfig
|
||||
combineToConfig src Flags {..} Environment {..} mc = do
|
||||
smosReportConfigDirectoryConfig <- combineToDirectoryConfig (smosReportConfigDirectoryConfig src) flagDirectoryFlags envDirectoryEnvironment (confDirectoryConf <$> mc)
|
||||
smosReportConfigDirectorySettings <- combineToDirectorySettings (smosReportConfigDirectorySettings src) flagDirectoryFlags envDirectoryEnvironment (confDirectoryConf <$> mc)
|
||||
smosReportConfigWaitingConfig <- combineToWaitingReportConfig (smosReportConfigWaitingConfig src) (mc >>= confWaitingReportConf)
|
||||
smosReportConfigStuckConfig <- combineToStuckReportConfig (smosReportConfigStuckConfig src) (mc >>= confStuckReportConf)
|
||||
smosReportConfigWorkConfig <- combineToWorkReportConfig (smosReportConfigWorkConfig src) (mc >>= confWorkReportConf)
|
||||
|
@ -37,7 +37,7 @@ emptyEnvironment =
|
||||
}
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConf :: !DirectoryConfiguration,
|
||||
{ confDirectoryConf :: !DirectorySettingsuration,
|
||||
confWaitingReportConf :: !(Maybe WaitingReportConfiguration),
|
||||
confStuckReportConf :: !(Maybe StuckReportConfiguration),
|
||||
confWorkReportConf :: !(Maybe WorkReportConfiguration)
|
||||
@ -61,7 +61,7 @@ instance HasObjectCodec Configuration where
|
||||
defaultConfiguration :: Configuration
|
||||
defaultConfiguration =
|
||||
Configuration
|
||||
{ confDirectoryConf = defaultDirectoryConfiguration,
|
||||
{ confDirectoryConf = defaultDirectorySettingsuration,
|
||||
confWorkReportConf = Nothing,
|
||||
confStuckReportConf = Nothing,
|
||||
confWaitingReportConf = Nothing
|
||||
@ -70,7 +70,7 @@ defaultConfiguration =
|
||||
backToConfiguration :: SmosReportConfig -> Configuration
|
||||
backToConfiguration SmosReportConfig {..} =
|
||||
Configuration
|
||||
{ confDirectoryConf = backToDirectoryConfiguration smosReportConfigDirectoryConfig,
|
||||
{ confDirectoryConf = backToDirectorySettingsuration smosReportConfigDirectorySettings,
|
||||
confWaitingReportConf =
|
||||
if smosReportConfigWaitingConfig == defaultWaitingReportConfig
|
||||
then Nothing
|
||||
|
@ -21,23 +21,23 @@ import Smos.Report.Archive
|
||||
import Smos.Report.Filter
|
||||
import Smos.Report.ShouldPrint
|
||||
|
||||
streamSmosArchiveFiles :: MonadIO m => DirectoryConfig -> ConduitT i (Path Rel File) m ()
|
||||
streamSmosArchiveFiles :: MonadIO m => DirectorySettings -> ConduitT i (Path Rel File) m ()
|
||||
streamSmosArchiveFiles dc = do
|
||||
ad <- liftIO $ resolveDirArchiveDir dc
|
||||
sourceFilesInNonHiddenDirsRecursivelyRel ad .| filterSmosFilesRel
|
||||
|
||||
streamSmosProjectsFiles :: MonadIO m => DirectoryConfig -> ConduitT i (Path Rel File) m ()
|
||||
streamSmosProjectsFiles :: MonadIO m => DirectorySettings -> ConduitT i (Path Rel File) m ()
|
||||
streamSmosProjectsFiles dc = do
|
||||
pd <- liftIO $ resolveDirProjectsDir dc
|
||||
sourceFilesInNonHiddenDirsRecursivelyRel pd .| filterSmosFilesRel
|
||||
|
||||
streamSmosProjects :: MonadIO m => ShouldPrint -> DirectoryConfig -> ConduitT i (Path Rel File, SmosFile) m ()
|
||||
streamSmosProjects :: MonadIO m => ShouldPrint -> DirectorySettings -> ConduitT i (Path Rel File, SmosFile) m ()
|
||||
streamSmosProjects sp dc = do
|
||||
pd <- liftIO $ resolveDirProjectsDir dc
|
||||
streamSmosProjectsFiles dc .| parseSmosFilesRel pd .| printShouldPrint sp
|
||||
|
||||
streamSmosFilesFromWorkflowRel ::
|
||||
MonadIO m => HideArchive -> DirectoryConfig -> ConduitT i (Path Rel File) m ()
|
||||
MonadIO m => HideArchive -> DirectorySettings -> ConduitT i (Path Rel File) m ()
|
||||
streamSmosFilesFromWorkflowRel ha dc = do
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
case directoryConfigArchiveFileSpec dc of
|
||||
@ -213,7 +213,7 @@ forestCursors ts =
|
||||
Just fc' -> go fc'
|
||||
)
|
||||
|
||||
produceReport :: MonadIO m => HideArchive -> ShouldPrint -> DirectoryConfig -> ConduitM (Path Rel File, SmosFile) Void m b -> m b
|
||||
produceReport :: MonadIO m => HideArchive -> ShouldPrint -> DirectorySettings -> ConduitM (Path Rel File, SmosFile) Void m b -> m b
|
||||
produceReport ha sp dc rc = do
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
runConduit $ streamSmosFilesFromWorkflowRel ha dc .| produceReportFromFiles sp wd .| rc
|
||||
|
@ -42,7 +42,7 @@ instance Validity WaitingReport where
|
||||
instance HasCodec WaitingReport where
|
||||
codec = dimapCodec WaitingReport waitingReportEntries codec
|
||||
|
||||
produceWaitingReport :: MonadIO m => Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectoryConfig -> m WaitingReport
|
||||
produceWaitingReport :: MonadIO m => Maybe EntryFilter -> HideArchive -> ShouldPrint -> DirectorySettings -> m WaitingReport
|
||||
produceWaitingReport ef ha sp dc = produceReport ha sp dc (waitingReportConduit ef)
|
||||
|
||||
waitingReportConduit :: Monad m => Maybe EntryFilter -> ConduitT (Path Rel File, SmosFile) void m WaitingReport
|
||||
|
@ -35,7 +35,7 @@ import Smos.Report.Stuck
|
||||
import Smos.Report.Time
|
||||
import Smos.Report.Waiting
|
||||
|
||||
produceWorkReport :: MonadIO m => HideArchive -> ShouldPrint -> DirectoryConfig -> WorkReportContext -> m WorkReport
|
||||
produceWorkReport :: MonadIO m => HideArchive -> ShouldPrint -> DirectorySettings -> WorkReportContext -> m WorkReport
|
||||
produceWorkReport ha sp dc wrc = produceReport ha sp dc $ workReportConduit wrc
|
||||
|
||||
workReportConduit :: Monad m => WorkReportContext -> ConduitT (Path Rel File, SmosFile) void m WorkReport
|
||||
|
@ -25,11 +25,11 @@ schedule Settings {..} = do
|
||||
rh <- readReccurrenceHistory setDirectorySettings
|
||||
handleSchedule setDirectorySettings rh now setSchedule
|
||||
|
||||
handleSchedule :: DirectoryConfig -> RecurrenceHistory -> UTCTime -> Schedule -> IO ()
|
||||
handleSchedule :: DirectorySettings -> RecurrenceHistory -> UTCTime -> Schedule -> IO ()
|
||||
handleSchedule dc rh now sched =
|
||||
mapM_ (handleScheduleItem dc rh now) (scheduleItems sched)
|
||||
|
||||
handleScheduleItem :: DirectoryConfig -> RecurrenceHistory -> UTCTime -> ScheduleItem -> IO (Maybe LocalTime)
|
||||
handleScheduleItem :: DirectorySettings -> RecurrenceHistory -> UTCTime -> ScheduleItem -> IO (Maybe LocalTime)
|
||||
handleScheduleItem dc rh now si = do
|
||||
zone <- loadLocalTZ
|
||||
let activateImmediately :: IO (Maybe LocalTime)
|
||||
@ -101,7 +101,7 @@ scheduleItemDisplayName si@ScheduleItem {..} =
|
||||
show
|
||||
scheduleItemDescription
|
||||
|
||||
performScheduleItem :: DirectoryConfig -> LocalTime -> ScheduleItem -> IO ScheduleItemResult
|
||||
performScheduleItem :: DirectorySettings -> LocalTime -> ScheduleItem -> IO ScheduleItemResult
|
||||
performScheduleItem dc pretendTime si@ScheduleItem {..} = do
|
||||
wdir <- resolveDirWorkflowDir dc
|
||||
from <- resolveFile wdir scheduleItemTemplate
|
||||
|
@ -38,11 +38,11 @@ combineToInstructions cmd Flags {..} Environment {..} mc = do
|
||||
CommandSample fp mdpt -> DispatchSample <$> resolveFile' fp <*> mapM (fmap DestinationPathTemplate . parseRelFile) mdpt
|
||||
CommandSchedule -> pure DispatchSchedule
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mc)
|
||||
(confDirectorySettingsuration <$> mc)
|
||||
let setSchedule = fromMaybe (Schedule []) $ cM schedulerConfSchedule
|
||||
let setColourSettings = getColourSettings (mc >>= confColourConfiguration)
|
||||
pure (Instructions d Settings {..})
|
||||
|
@ -55,7 +55,7 @@ data Flags = Flags
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration,
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration,
|
||||
confColourConfiguration :: !(Maybe ColourConfiguration),
|
||||
confSchedulerConfiguration :: !(Maybe SchedulerConfiguration)
|
||||
}
|
||||
@ -66,7 +66,7 @@ instance HasCodec Configuration where
|
||||
codec =
|
||||
object "Configuration" $
|
||||
Configuration
|
||||
<$> objectCodec .= confDirectoryConfiguration
|
||||
<$> objectCodec .= confDirectorySettingsuration
|
||||
<*> colourConfigurationTopLevelObjectCodec .= confColourConfiguration
|
||||
<*> optionalFieldOrNull "scheduler" "The scheduler configuration" .= confSchedulerConfiguration
|
||||
|
||||
@ -147,7 +147,7 @@ data Dispatch
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Settings = Settings
|
||||
{ setDirectorySettings :: !DirectoryConfig,
|
||||
{ setDirectorySettings :: !DirectorySettings,
|
||||
setSchedule :: !Schedule,
|
||||
setColourSettings :: !ColourSettings
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ instance Semigroup LatestActivation where
|
||||
then la1
|
||||
else la2
|
||||
|
||||
readReccurrenceHistory :: DirectoryConfig -> IO RecurrenceHistory
|
||||
readReccurrenceHistory :: DirectorySettings -> IO RecurrenceHistory
|
||||
readReccurrenceHistory dc = do
|
||||
workflowDir <- resolveDirWorkflowDir dc
|
||||
archiveDir <- resolveDirArchiveDir dc
|
||||
|
@ -63,7 +63,7 @@ spec = do
|
||||
{ workflowFiles = workflowDF,
|
||||
archiveFiles = archiveDF
|
||||
}
|
||||
in withDirectoryConfig is $ \dc -> do
|
||||
in withDirectorySettings is $ \dc -> do
|
||||
rh <- readReccurrenceHistory dc
|
||||
rh
|
||||
`shouldBe` M.fromList
|
||||
|
@ -37,11 +37,11 @@ deriveSettings Flags {..} Environment {..} mc = do
|
||||
Left err -> die $ "Failed to parse header: " <> err
|
||||
Right h -> pure h
|
||||
setDirectorySettings <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConfiguration <$> mc)
|
||||
(confDirectorySettingsuration <$> mc)
|
||||
setTaskFile <- forM flagTaskFile parseRelFile
|
||||
pure Settings {..}
|
||||
|
||||
|
@ -14,12 +14,12 @@ data Flags = Flags
|
||||
deriving (Show, Eq)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConfiguration :: !DirectoryConfiguration
|
||||
{ confDirectorySettingsuration :: !DirectorySettingsuration
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
|
||||
instance HasCodec Configuration where
|
||||
codec = dimapCodec Configuration confDirectoryConfiguration codec
|
||||
codec = dimapCodec Configuration confDirectorySettingsuration codec
|
||||
|
||||
data Environment = Environment
|
||||
{ envDirectoryEnvironment :: !DirectoryEnvironment
|
||||
@ -29,6 +29,6 @@ data Environment = Environment
|
||||
data Settings = Settings
|
||||
{ setTask :: !Header,
|
||||
setTaskFile :: !(Maybe (Path Rel File)),
|
||||
setDirectorySettings :: !DirectoryConfig
|
||||
setDirectorySettings :: !DirectorySettings
|
||||
}
|
||||
deriving (Show, Eq)
|
||||
|
@ -41,8 +41,8 @@ getInstructions = do
|
||||
combineToInstructions :: Command -> Flags -> Environment -> Maybe Configuration -> IO Instructions
|
||||
combineToInstructions c Flags {..} Environment {..} mc = do
|
||||
dc <-
|
||||
combineToDirectoryConfig
|
||||
defaultDirectoryConfig
|
||||
combineToDirectorySettings
|
||||
defaultDirectorySettings
|
||||
flagDirectoryFlags
|
||||
envDirectoryEnvironment
|
||||
(confDirectoryConf <$> mc)
|
||||
|
@ -77,7 +77,7 @@ data Environment = Environment
|
||||
deriving (Show, Generic)
|
||||
|
||||
data Configuration = Configuration
|
||||
{ confDirectoryConf :: !DirectoryConfiguration,
|
||||
{ confDirectoryConf :: !DirectorySettingsuration,
|
||||
confSyncConf :: !(Maybe SyncConfiguration)
|
||||
}
|
||||
deriving (Show, Generic)
|
||||
|
@ -70,13 +70,13 @@ reportConfigFor ::
|
||||
Path Abs Dir -> SmosReportConfig
|
||||
reportConfigFor workflowDir =
|
||||
defaultReportConfig
|
||||
{ smosReportConfigDirectoryConfig = directoryConfigFor workflowDir
|
||||
{ smosReportConfigDirectorySettings = directoryConfigFor workflowDir
|
||||
}
|
||||
|
||||
directoryConfigFor ::
|
||||
Path Abs Dir -> DirectoryConfig
|
||||
Path Abs Dir -> DirectorySettings
|
||||
directoryConfigFor workflowDir =
|
||||
defaultDirectoryConfig
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
}
|
||||
|
||||
|
@ -181,7 +181,7 @@ convArchiveFile =
|
||||
modifyMSmosFileEditorCursorMS $ \case
|
||||
Nothing -> pure Nothing
|
||||
Just sfec -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
let runArchiveM =
|
||||
liftIO
|
||||
. flip
|
||||
|
@ -366,7 +366,7 @@ forestClockOutEverywhereInAllFilesAndClockInHere =
|
||||
|
||||
clockOutInAllAgendaFiles :: UTCTime -> SmosM ()
|
||||
clockOutInAllAgendaFiles now = do
|
||||
dirConfig <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dirConfig <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
mCurFile <- gets $ fmap smosFileEditorPath . editorCursorFileCursor . smosStateCursor
|
||||
-- We won't clock out in the current file asynchronously because this produces a race condition.
|
||||
let isCurrent af =
|
||||
|
@ -36,7 +36,7 @@ reportNextActions =
|
||||
{ actionName = "reportNextActions",
|
||||
actionFunc = modifyEditorCursorS $ \ec -> do
|
||||
saveCurrentSmosFile
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
narc <- liftIO $ produceNextActionReportCursor Nothing HideArchive DontPrint dc
|
||||
pure $
|
||||
ec
|
||||
@ -87,7 +87,7 @@ enterNextActionFile =
|
||||
case editorCursorReportCursor $ smosStateCursor ss of
|
||||
Just rc -> case rc of
|
||||
ReportNextActions narc -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
case nextActionReportCursorBuildSmosFileCursor wd narc of
|
||||
Nothing -> pure ()
|
||||
|
@ -31,7 +31,7 @@ reportStuck =
|
||||
{ actionName = "reportStuck",
|
||||
actionFunc = modifyEditorCursorS $ \ec -> do
|
||||
saveCurrentSmosFile
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
zone <- liftIO loadLocalTZ
|
||||
narc <- liftIO $ produceStuckReportCursor zone DontPrint dc
|
||||
pure $
|
||||
@ -83,7 +83,7 @@ enterStuckFile =
|
||||
case editorCursorReportCursor $ smosStateCursor ss of
|
||||
Just rc -> case rc of
|
||||
ReportStuck src -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
pd <- liftIO $ resolveDirProjectsDir dc
|
||||
case stuckReportCursorSelectedFile src of
|
||||
Nothing -> pure ()
|
||||
|
@ -39,7 +39,7 @@ reportTimestamps =
|
||||
{ actionName = "reportTimestamps",
|
||||
actionFunc = modifyEditorCursorS $ \ec -> do
|
||||
saveCurrentSmosFile
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
zone <- liftIO loadLocalTZ
|
||||
now <- liftIO getCurrentTime
|
||||
let today = localDay $ utcToLocalTimeTZ zone now
|
||||
@ -93,7 +93,7 @@ enterTimestampsFile =
|
||||
case editorCursorReportCursor $ smosStateCursor ss of
|
||||
Just rc -> case rc of
|
||||
ReportTimestamps wrc -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
case timestampsReportCursorBuildSmosFileCursor wd wrc of
|
||||
Nothing -> pure ()
|
||||
|
@ -36,7 +36,7 @@ reportWaiting =
|
||||
{ actionName = "reportWaiting",
|
||||
actionFunc = modifyEditorCursorS $ \ec -> do
|
||||
saveCurrentSmosFile
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
narc <- liftIO $ produceWaitingReportCursor Nothing HideArchive DontPrint dc
|
||||
pure $
|
||||
ec
|
||||
@ -87,7 +87,7 @@ enterWaitingFile =
|
||||
case editorCursorReportCursor $ smosStateCursor ss of
|
||||
Just rc -> case rc of
|
||||
ReportWaiting wrc -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
case waitingReportCursorBuildSmosFileCursor wd wrc of
|
||||
Nothing -> pure ()
|
||||
|
@ -51,7 +51,7 @@ reportWork =
|
||||
wd <- liftIO $ resolveReportWorkflowDir src
|
||||
pd <- liftIO $ resolveReportProjectsDir src
|
||||
let mpd = stripProperPrefix wd pd
|
||||
let dc = smosReportConfigDirectoryConfig src
|
||||
let dc = smosReportConfigDirectorySettings src
|
||||
let wc = smosReportConfigWorkConfig src
|
||||
let wac = smosReportConfigWaitingConfig src
|
||||
let sc = smosReportConfigStuckConfig src
|
||||
@ -124,7 +124,7 @@ enterWorkFile =
|
||||
case editorCursorReportCursor $ smosStateCursor ss of
|
||||
Just rc -> case rc of
|
||||
ReportWork wrc -> do
|
||||
dc <- asks $ smosReportConfigDirectoryConfig . configReportConfig
|
||||
dc <- asks $ smosReportConfigDirectorySettings . configReportConfig
|
||||
wd <- liftIO $ resolveDirWorkflowDir dc
|
||||
let switchToEntryReportEntryCursor ad EntryReportEntryCursor {..} = switchToCursor (ad </> entryReportEntryCursorFilePath) $ Just $ makeSmosFileCursorFromSimpleForestCursor entryReportEntryCursorForestCursor
|
||||
switchToSelectedInEntryReportCursor ad erc =
|
||||
|
@ -99,8 +99,8 @@ runCommandsOn startingFilePath start commands =
|
||||
defaultConfig
|
||||
{ configReportConfig =
|
||||
defaultReportConfig
|
||||
{ smosReportConfigDirectoryConfig =
|
||||
defaultDirectoryConfig
|
||||
{ smosReportConfigDirectorySettings =
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
}
|
||||
}
|
||||
|
@ -110,8 +110,8 @@ startupSpec workflowDirSpec startupFile = do
|
||||
defaultConfig
|
||||
{ configReportConfig =
|
||||
defaultReportConfig
|
||||
{ smosReportConfigDirectoryConfig =
|
||||
defaultDirectoryConfig
|
||||
{ smosReportConfigDirectorySettings =
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = workflowDirSpec
|
||||
}
|
||||
}
|
||||
|
@ -60,8 +60,8 @@ lockSpec workflowDir startupFile = do
|
||||
defaultConfig
|
||||
{ configReportConfig =
|
||||
defaultReportConfig
|
||||
{ smosReportConfigDirectoryConfig =
|
||||
defaultDirectoryConfig
|
||||
{ smosReportConfigDirectorySettings =
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow workflowDir
|
||||
}
|
||||
}
|
||||
|
@ -45,8 +45,8 @@ spec = modifyMaxSuccess (`div` 50) $
|
||||
defaultConfig
|
||||
{ configReportConfig =
|
||||
defaultReportConfig
|
||||
{ smosReportConfigDirectoryConfig =
|
||||
defaultDirectoryConfig
|
||||
{ smosReportConfigDirectorySettings =
|
||||
defaultDirectorySettings
|
||||
{ directoryConfigWorkflowFileSpec = AbsoluteWorkflow tdir
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user