packages feed

inch-0.2.0: src/Language/Inch/Main.lhs

> {-# LANGUAGE ScopedTypeVariables #-}

> module Main where

> import Prelude
> import System.Environment
> import System.FilePath

> import Language.Inch.Syntax
> import Language.Inch.PrettyPrinter
> import Language.Inch.File


> help :: String -> String
> help me = "Usage: " ++ me ++ " [original file] [input file] [output file]\n\
>           \    or " ++ me ++ " [input file]"

> main :: IO ()
> main = do
>     args <- getArgs
>     me <- getProgName
>     case args of
>         [original, input, output] -> do
>             s <- readFile input
>             (md, st) <- checkFile original s
>             writeFile (replaceExtension original ".inch") (getInterface md)
>             eraseWrite output md st
>         [original] -> do
>             s <- readFile original
>             (md, _) <- checkFile original s
>             putStrLn $ renderMe (fog md)
>         _ -> putStrLn $ help me