{-# LANGUAGE NoImplicitPrelude #-}

-- | Functions to parse command line arguments for Stack's @upload@ command.

module Stack.Options.UploadParser
  ( uploadOptsParser
  ) where

import           Options.Applicative ( Parser, flag, help, long )
import           Stack.Options.SDistParser ( sdistOptsParser )
import           Stack.Prelude
import           Stack.Upload ( UploadOpts (..), UploadVariant (..) )

-- | Parse command line arguments for Stack's @upload@ command.

uploadOptsParser :: Parser UploadOpts
uploadOptsParser :: Parser UploadOpts
uploadOptsParser =
  SDistOpts -> UploadVariant -> UploadOpts
UploadOpts
    (SDistOpts -> UploadVariant -> UploadOpts)
-> Parser SDistOpts -> Parser (UploadVariant -> UploadOpts)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser SDistOpts
sdistOptsParser
    Parser (UploadVariant -> UploadOpts)
-> Parser UploadVariant -> Parser UploadOpts
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Parser UploadVariant
uploadVariant
  where
    uploadVariant :: Parser UploadVariant
uploadVariant = UploadVariant
-> UploadVariant
-> Mod FlagFields UploadVariant
-> Parser UploadVariant
forall a. a -> a -> Mod FlagFields a -> Parser a
flag UploadVariant
Publishing UploadVariant
Candidate
      (  String -> Mod FlagFields UploadVariant
forall (f :: * -> *) a. HasName f => String -> Mod f a
long String
"candidate"
      Mod FlagFields UploadVariant
-> Mod FlagFields UploadVariant -> Mod FlagFields UploadVariant
forall a. Semigroup a => a -> a -> a
<> String -> Mod FlagFields UploadVariant
forall (f :: * -> *) a. String -> Mod f a
help String
"Upload as a package candidate."
      )