{-|
Module      : Angle.Main
Description : Client executable for running angle.
Copyright   : Copyright (C) 2015 Ben Moon
License     : GNU GPL, version 3
Maintainer  : GuiltyDolphin@gmail.com
Stability   : alpha

Module defining main executable for running Angle programs both
interactively and non-interactively.
-}

module Main (main) where

import Control.Monad

import Angle.Options
import Angle.REPL (runInteractive)
import Angle.Interpreter (runInterpreter)


main :: IO ()
main = do
    opts <- getOptions
    let Options { optVerbose = verbose
                , optFiles = files
                , optInteractive = interactive
                , optCode = code
                } = opts
    when verbose (putStrLn "Verbose not yet implemented")
    if interactive || (null files && null code)
    then runInteractive opts
    else runInterpreter opts
    return ()



