packages feed

hpack-dhall-0.4.0: exe/options/Options.hs

{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ApplicativeDo #-}

module Options
    ( Options(..)
    , parseNumericVersion
    , parseVersion
    , parseOptions
    , parsePkgFile
    , parseForce
    , parseQuiet
    ) where

import Data.Monoid ((<>))
import Hpack.Dhall (packageConfig)
import Options.Applicative

data Options = Options {pkgFile :: FilePath}

parseOptions :: Parser Options
parseOptions = helper <*> do
    pkgFile <- parsePkgFile
    return (Options {..})

parsePkgFile :: Parser FilePath
parsePkgFile =
    strOption $
    long "package-dhall"
    <> metavar "FILE"
    <> value packageConfig
    <> showDefault
    <> help "A record of hpack fields"

parseNumericVersion :: Parser ()
parseNumericVersion =
    flag' () $
    long "numeric-version"
    <> help "Show version only"

parseVersion :: Parser ()
parseVersion =
    flag' () $
    long "version"
    <> help "Show app name and version"

parseForce :: Parser Bool
parseForce =
    flag False True $
    long "force"
    <> short 'f'
    <> help "Overwrite of the output .cabal file unnecessarily"

parseQuiet :: Parser Bool
parseQuiet =
    flag False True $
    long "silent"
    <> help "Suppress logging"