module Shaker.Config
where
import Shaker.Type
import Shaker.PluginConfig
import Shaker.Cli(InputState(..))
import Control.Concurrent
defaultInput ::ShakerInput
defaultInput = ShakerInput {
compileInputs = [defaultCompileInput],
listenerInput = defaultListenerInput,
pluginMap = defaultPluginMap,
commandMap = defaultCommandMap
,argument = Nothing
,modifiedInfoFiles = []
}
defaultInputInitialized :: IO ShakerInput
defaultInputInitialized = do
defThrdData <- defaultThreadData
input_state <- defaultInputState
return defaultInput {
threadData = defThrdData
,inputState = 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 {
listenToken = listen_token
,quitToken = quit_token
,threadIdListenList = thread_listen
,threadIdQuitList = thread_quit
}
defaultInputState :: IO InputState
defaultInputState = do
inputMv <- newEmptyMVar
tokenMv <- newEmptyMVar
return InputState { input = inputMv, token = tokenMv }