packages feed

stack-2.7.1: src/Stack/Options/UploadParser.hs

{-# LANGUAGE NoImplicitPrelude #-}
module Stack.Options.UploadParser
  ( UploadOpts(..)
  , UploadVariant(..)
  , uploadOptsParser
  ) where

import           Options.Applicative
import           Stack.Options.SDistParser (sdistOptsParser)
import           Stack.Prelude
import           Stack.SDist (SDistOpts(..))

data UploadOpts = UploadOpts
  { uoptsSDistOpts :: SDistOpts
  , uoptsUploadVariant :: UploadVariant
  -- ^ Says whether to publish the package or upload as a release candidate
  }

data UploadVariant
  = Publishing
  -- ^ Publish the package
  | Candidate
  -- ^ Create a package candidate

-- | Parser for arguments to `stack upload`
uploadOptsParser :: Parser UploadOpts
uploadOptsParser =
  UploadOpts
    <$> sdistOptsParser
    <*> uploadVariant
  where
    uploadVariant =
      flag Publishing Candidate
        (long "candidate" <>
         help "Upload as a package candidate")