created an args system

This commit is contained in:
thepenguin 2022-10-26 12:37:48 +02:00
parent 152d73665f
commit c50d9e35dc
No known key found for this signature in database
GPG Key ID: F258C8C10D060D5E

View File

@ -1,6 +1,29 @@
module Main where
import Control.Monad
import System.Environment
import System.Exit
import Text.ParserCombinators.ReadP
parse :: ReadP String -> String -> String
parse rules = fst . last .readP_to_S rules
main :: IO ()
main = putStrLn =<< readFile =<< head <$> getArgs
main = useArgs =<< ( parse argParse . unlines) <$> getArgs
argParse :: ReadP String
argParse =
string "-" >> (many1 (satisfy (/= ' ')))
useArgs :: String -> IO a
useArgs [] = exit
useArgs ('h':_) = usage >> exit
useArgs ('v':_) = version >> exit
useArgs (_:xs) = useArgs xs
usage :: IO ()
usage = putStrLn "Usage: \"PENDINGNAME\" [-hv] [file]"
version :: IO ()
version = putStrLn "\"PENDINGNAME\" 0.1"
exit :: IO a
exit = exitWith ExitSuccess