module Axel.Parse.Args where import Data.Semigroup ((<>)) import Options.Applicative ( Parser , argument , command , info , metavar , progDesc , str , subparser ) data Command = File FilePath | Project | Version commandParser :: Parser Command commandParser = subparser $ projectCommand <> fileCommand <> versionCommand where fileCommand = command "file" (info (File <$> argument str (metavar "FILE")) $ progDesc "Build and run a single file") projectCommand = command "project" (info (pure Project) $ progDesc "Build and run the project") versionCommand = command "version" (info (pure Version) $ progDesc "Display the version of the Axel compiler")