git @ Cat's Eye Technologies Robin / master src / Main.hs
master

Tree @master (Download .tar.gz)

Main.hs @masterraw · history · blame

-- Copyright (c) 2012-2024, Chris Pressey, Cat's Eye Technologies.
-- This file is distributed under a 2-clause BSD license.  See LICENSES/ dir.
-- SPDX-License-Identifier: LicenseRef-BSD-2-Clause-X-Robin

module Main where

import System.Environment
import System.Exit

import Language.Robin.CmdLine

import Language.Robin.EventLoop (eventLoop)
import Language.Robin.Facilities.Concurrent (orchestrate)
import qualified Language.Robin.Facilities.LineTerminal as LineTerminal
import qualified Language.Robin.Facilities.RandomSource as RandomSource


main = do
    args <- getArgs
    case args of
        [] -> do
            abortWithUsage
        _ -> do
            let (args', env', showEvents) = processFlags args
            (_, reactors, results) <- processArgs args' env'
            writeResults $ reverse results
            (handlers, waitForEvents) <- orchestrate [(LineTerminal.init), (RandomSource.init)]
            eventLoop showEvents handlers waitForEvents reactors
            exitWith ExitSuccess