{-# LANGUAGE LambdaCase #-}
module Main where
import Agda.Contrib.Snippets
import Agda.Interaction.Options
import System.Environment
import System.Exit
import System.IO
import Network.URI
import Control.Applicative
note :: b -> Maybe a -> Either b a
note b Nothing = Left b
note _ (Just a) = Right a
main :: IO ()
main = getArgs >>= \case
(fp:output:css:uri:agdaOpts) -> do
print (fp,css,uri,agdaOpts)
case liftA2 (,) (note "Malformed URI" $ parseURIReference uri)
(parseStandardOptions agdaOpts) of
Right (uri', agdaOpts') -> writeFile output =<< renderAgdaSnippets agdaOpts' css uri' fp
Left e -> hPutStrLn stderr e >> exitFailure
_ -> do
n <- getProgName
putStrLn $ "Usage: " ++ n ++ " input-file.lagda output-file css-class-name /lib/uri/ [agda options]"
exitFailure