packages feed

stgi-1: app/Main.hs

{-# LANGUAGE LambdaCase        #-}
{-# LANGUAGE OverloadedStrings #-}

module Main (main) where



import System.Console.ANSI (hSupportsANSI)
import System.Environment
import System.IO           (stdout)

import           CmdLineArgs
import qualified Stg.ExamplePrograms      as Example
import           Stg.Language.Prettyprint
import           Stg.RunForPager



main :: IO ()
main = do
    opts <- parseCmdArgs =<< getArgs

    ansi <- case optAnsi opts of
        Just x -> pure x
        Nothing -> hSupportsANSI stdout
    let numStates = optNumStates opts
        verbosity = optVerbosity opts

    let prog = Example.addTwoNumbers 1 2

    runForPager (if ansi then prettyprint else prettyprintPlain)
                numStates
                verbosity
                prog