module Shaker.Config
where
import Data.Monoid
import Shaker.Type
import Shaker.PluginConfig
import Shaker.Cli(InputState(..))
import Control.Concurrent
defaultInput ::ShakerInput
defaultInput = ShakerInput {
shakerCompileInputs = [mempty]
,shakerListenerInput= mempty
,shakerPluginMap = defaultPluginMap
,shakerCommandMap = defaultCommandMap
,shakerArgument = []
,shakerModifiedInfoFiles = []
,shakerThreadData = undefined
,shakerInputState = undefined
,shakerLocalBuildInfo = undefined
,shakerPackageIndex = mempty
,shakerModuleData = []
,shakerVerbosity = Silent
}
defaultInputInitialized :: IO ShakerInput
defaultInputInitialized = do
defThrdData <- defaultThreadData
input_state <- defaultInputState
return defaultInput {
shakerThreadData = defThrdData
,shakerInputState = input_state
}
defaultThreadData :: IO ThreadData
defaultThreadData = do
thread_listen <- newMVar [] :: IO ThreadIdList
thread_quit <- newMVar [] :: IO ThreadIdList
listen_token <- newEmptyMVar
quit_token <- newEmptyMVar
return ThreadData {
threadDataListenToken = listen_token
,threadDataQuitToken = quit_token
,threadDataListenList = thread_listen
,threadDataQuitList = thread_quit
}
defaultInputState :: IO InputState
defaultInputState = do
inputMv <- newEmptyMVar
tokenMv <- newEmptyMVar
return InputState { shakerInputStateCommand = inputMv, shakerInputStateToken = tokenMv }