module Config where import Job.Types import Monitor create :: FilePath -> IO (String, Jobs, [Monitor]) create configPath = readFile configPath >>= createFromConfig createFromConfig :: String -> IO (String, Jobs, [Monitor]) createFromConfig content = do let (watchDir:rest) = lines content let jobs = map jobDefToJob rest let monitors = map jobToMonitor jobs return (watchDir, createJobs jobs, monitors) jobDefToJob :: String -> Job jobDefToJob def = let (id:pattern:command:args) = words def in createJob id command args pattern jobToMonitor job = case jobId job of 'o':'m':_ -> StdoutMonitor (jobId job) 0 (fullName job) "" _ -> StatusCodeMonitor (jobId job) 0 (fullName job) (status job) ""