1{-# LANGUAGE NoImplicitPrelude #-}
2module Stack.Options.UploadParser
3  ( UploadOpts(..)
4  , UploadVariant(..)
5  , uploadOptsParser
6  ) where
7
8import           Options.Applicative
9import           Stack.Options.SDistParser (sdistOptsParser)
10import           Stack.Prelude
11import           Stack.SDist (SDistOpts(..))
12
13data UploadOpts = UploadOpts
14  { uoptsSDistOpts :: SDistOpts
15  , uoptsUploadVariant :: UploadVariant
16  -- ^ Says whether to publish the package or upload as a release candidate
17  }
18
19data UploadVariant
20  = Publishing
21  -- ^ Publish the package
22  | Candidate
23  -- ^ Create a package candidate
24
25-- | Parser for arguments to `stack upload`
26uploadOptsParser :: Parser UploadOpts
27uploadOptsParser =
28  UploadOpts
29    <$> sdistOptsParser
30    <*> uploadVariant
31  where
32    uploadVariant =
33      flag Publishing Candidate
34        (long "candidate" <>
35         help "Upload as a package candidate")
36