twitch-0.1.0.0: src/Twitch/Run.hs
module Twitch.Run where
import Twitch.Internal
import Twitch.InternalRule
import Twitch.Rule (RuleIssue)
import Data.Either
import Prelude hiding (FilePath, log)
import Filesystem.Path
import Filesystem.Path.CurrentOS
import Control.Applicative
import System.FSNotify
import System.Directory
import Twitch.Path
import Data.Default
import Debug.Trace
-- This the main interface for running a Dep
run :: Dep -> IO WatchManager
run dep = do
currentDir <- decodeString <$> getCurrentDirectory
dirs <- findAllDirs currentDir
runWithConfig currentDir (def { log = print, dirsToWatch = dirs }) dep
runWithConfig :: FilePath -> Config -> Dep -> IO WatchManager
runWithConfig currentDir config dep = do
let (issues, rules) = depToRules currentDir dep
-- TODO handle the issues somehow
-- Log and perhaps error
setupRules config rules
depToRulesWithCurrentDir :: Dep -> IO ([RuleIssue], [InternalRule])
depToRulesWithCurrentDir dep = do
currentDir <- decodeString <$> getCurrentDirectory
return $ depToRules currentDir dep
depToRules :: FilePath -> Dep -> ([RuleIssue], [InternalRule])
depToRules currentDir
= partitionEithers . map (toInternalRule currentDir) . runDep