-- | Contains the default configuration of shaker 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 }