packages feed

record-preprocessor-0.1.0.0: preprocessor/Main.hs

module Main where

import BasePrelude
import System.IO
import Conversion
import Conversion.Text
import Record.Syntax
import qualified Data.Text.IO as Text
import qualified Data.Text.Lazy.IO as LazyText


main =
  do
    [sourcePath, inputPath, outputPath] <- getArgs
    inHandle <- openFile inputPath ReadMode
    outHandle <- openFile outputPath WriteMode

    Text.hGetContents inHandle >>= return . processModule >>= \case
      Left x -> do
        hPutStrLn stderr $ formatError x
        hFlush outHandle
        exitWith $ ExitFailure 1
      Right x -> do
        LazyText.hPutStrLn outHandle $ convert $ x
        hFlush outHandle
        exitWith $ ExitSuccess
  where
    formatError ((line, column), message) =
      "Error at " <> show line <> ":" <> show column <> ": " <> message