packages feed

language-smtlib-0.1.0.0: app/Main.hs

{-# LANGUAGE OverloadedStrings #-}

-- | A small command-line front end: parse an SMT-LIB 2 script from a file (or
-- stdin) and re-emit it in canonical form, or report the parse error.
module Main (main) where

import qualified Data.Text.IO as T
import System.Environment (getArgs)
import System.Exit (exitFailure)
import System.IO (hPutStrLn, stderr)

import Language.SMTLIB

main :: IO ()
main = do
  args <- getArgs
  (name, src) <- case args of
    []     -> (,) "<stdin>" <$> T.getContents
    [f]    -> (,) f <$> T.readFile f
    _      -> hPutStrLn stderr "usage: language-smtlib-exe [FILE]" >> exitFailure >> pure ("", "")
  case parseScript name src of
    Left err     -> hPutStrLn stderr (errorBundlePretty err) >> exitFailure
    Right script -> T.putStr (renderScript script)