diff options
author | Tom Smeding <tom@tomsmeding.com> | 2024-02-25 21:04:03 +0100 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2024-02-25 21:04:03 +0100 |
commit | c13617684eb10fc622cc502249591002e2f7d74c (patch) | |
tree | 1d7171e32f4503817e013133ac56f6d2ea4095ac /app/Main.hs | |
parent | f72bf16e2edc8d654e661cd59f820409219e5f27 (diff) |
Separate out library
Diffstat (limited to 'app/Main.hs')
-rw-r--r-- | app/Main.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/app/Main.hs b/app/Main.hs new file mode 100644 index 0000000..b88d508 --- /dev/null +++ b/app/Main.hs @@ -0,0 +1,28 @@ +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE TupleSections #-} +module Main where + +import Data.List (intersperse) +import System.Environment (getArgs) +import System.Exit (die, exitFailure) + +import HSVIS.Parser + + +main :: IO () +main = do + (source, fname) <- getArgs >>= \case + [] -> (,"<stdin>") <$> getContents + [fname] -> (,fname) <$> readFile fname + _ -> die "Usage: hs-visinter [filename.hs]" + + prog <- case parse fname source of + This errs -> do + sequence_ $ intersperse (putStrLn "") (map (putStrLn . printErrMsg) errs) + exitFailure + These errs res -> do + sequence_ $ intersperse (putStrLn "") (map (putStrLn . printErrMsg) errs) + return res + That res -> return res + + print prog |