axel-0.0.9: src/Axel/Parse/Args.hs
module Axel.Parse.Args where
import Axel
(applyInfix_AXEL_AUTOGENERATED_MACRO_DEFINITION,
def_AXEL_AUTOGENERATED_MACRO_DEFINITION)
import Data.Semigroup ((<>))
import Options.Applicative
(Parser, argument, command, info, metavar, progDesc, str,
subparser)
data Command = Convert FilePath
| File FilePath
| Project
| Version
commandParser
= (subparser
((<>) projectCommand
((<>) fileCommand ((<>) convertCommand versionCommand))))
where convertCommand
= (command "convert"
(info ((<$>) Convert (argument str (metavar "FILE")))
(progDesc "(EXPERIMENTAL) Convert a Haskell file to Axel")))
where
fileCommand
= (command "file"
(info ((<$>) File (argument str (metavar "FILE")))
(progDesc "Build and run a single file")))
where
projectCommand
= (command "project"
(info (pure Project) (progDesc "Build and run the project")))
where
versionCommand
= (command "version"
(info (pure Version)
(progDesc "Display the version of the Axel compiler")))
where
commandParser :: (Parser Command)