packages feed

brainheck-0.1.0.2: app/Main.hs

module Main where

import Brainheck
import Options.Applicative
import qualified Data.Text.IO as TIO
import Data.Monoid
import Data.Version
import Paths_brainheck

program :: Parser FilePath
program = argument str (metavar "FILE" <> help "Brainfuck file")

main :: IO ()
main = let runFile filepath = either (error . show) id . (parseBrainheck filepath) <$> TIO.readFile filepath >>= run in
    runFile =<< execParser (info (program <**> helper <**> versionInfo) (fullDesc
        <> progDesc "Brainh*ck - an interpreter"
        <> header "brainheck - a brainfuck intrepreter written in haskell and supporting utf-8"))
    where versionInfo = infoOption ("brainheck version: " ++ showVersion version) (short 'v' <> long "version" <> help "Show version")