dhall-fly-0.2.0: src/Fly/Options.hs
module Fly.Options where
import Options.Applicative
data PipelineType = Jobs | GroupedJobs
data InputType = File FilePath | Stdin
data Opts = Opts { pipelineType :: PipelineType, inputType :: InputType }
inputTypeParser :: Parser InputType
inputTypeParser = (File
<$> strOption (long "file"
<> help "Optional, defaults to stdin"))
<|> pure Stdin
parsePipelineType :: String -> Maybe PipelineType
parsePipelineType "jobs" = Just Jobs
parsePipelineType "grouped-jobs" = Just GroupedJobs
parsePipelineType _ = Nothing
pipelineTypeParser :: Parser PipelineType
pipelineTypeParser = option
(maybeReader parsePipelineType)
(long "pipeline-type"
<> help "'jobs' or 'grouped-jobs'"
<> value Jobs)
optsParser :: Parser Opts
optsParser = Opts <$> pipelineTypeParser <*> inputTypeParser
optsParserWithHelp :: ParserInfo Opts
optsParserWithHelp = info (optsParser <**> helper)
(fullDesc
<> progDesc "Translate dhall pipelines to yaml")