vger/src/Vger.hs

43 lines
1.0 KiB
Haskell

{-# Language ApplicativeDo #-}
{-# Language RecordWildCards #-}
import Gemini
import Options.Applicative
data Sample = Sample
{ baseDir :: String
, language :: String
, virtualhost :: Bool
}
sample :: Parser Sample
sample = do
baseDir <- strOption
( long "baseDir"
<> short 'd'
<> help "base directory to serve files from"
<> value "/var/gemini/")
language <- strOption
( long "language"
<> short 'l'
<> help "language to use in the response for gemini files"
<> value "")
virtualhost <- switch
( long "virtualhost"
<> short 'v'
<> help "virtualhost support")
pure Sample{..}
opts :: ParserInfo Sample
opts = info (sample <**> helper)
(fullDesc)
main :: IO ()
main = do
options <- execParser opts
url <- get_request
let request = parse_to_gemini (parse_url url)
answer <- create_answer request (language options) (baseDir options) (virtualhost options)
putStr (make_reply answer)
putStr (content answer)