rds-data-0.0.0.1: app/App/Cli/Options.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
module App.Cli.Options where
import App.Options
import Control.Applicative
import Data.ByteString (ByteString)
import qualified Amazonka.Data as AWS
import qualified App.Cli.Types as CLI
import qualified Data.Text as T
import qualified Options.Applicative as OA
opts :: OA.ParserInfo CLI.Cmd
opts = OA.info (pCmds <**> OA.helper) $ mconcat
[ OA.fullDesc
, OA.header $ mconcat
[ "rds-data"
]
]
pCmds :: OA.Parser CLI.Cmd
pCmds =
asum
[ subParser "up"
$ OA.info (CLI.CmdOfUpCmd <$> pUpCmd)
$ OA.progDesc "Up command."
, subParser "down"
$ OA.info (CLI.CmdOfDownCmd <$> pDownCmd)
$ OA.progDesc "Down command."
, subParser "local-stack"
$ OA.info (CLI.CmdOfLocalStackCmd <$> pLocalStackCmd)
$ OA.progDesc "Launch a local-stack RDS cluster."
]
pUpCmd :: OA.Parser CLI.UpCmd
pUpCmd =
CLI.UpCmd
<$> do OA.strOption $ mconcat
[ OA.long "resource-arn"
, OA.help "Resource ARN"
, OA.metavar "ARN"
]
<*> do OA.strOption $ mconcat
[ OA.long "secret-arn"
, OA.help "Secret ARN"
, OA.metavar "ARN"
]
<*> do OA.strOption $ mconcat
[ OA.long "migration-file"
, OA.help "Migration File"
, OA.metavar "FILE"
]
pDownCmd :: OA.Parser CLI.DownCmd
pDownCmd =
CLI.DownCmd
<$> do OA.strOption $ mconcat
[ OA.long "resource-arn"
, OA.help "Resource ARN"
, OA.metavar "ARN"
]
<*> do OA.strOption $ mconcat
[ OA.long "secret-arn"
, OA.help "Secret ARN"
, OA.metavar "ARN"
]
<*> do OA.strOption $ mconcat
[ OA.long "migration-file"
, OA.help "Migration File"
, OA.metavar "FILE"
]
pLocalStackCmd :: OA.Parser CLI.LocalStackCmd
pLocalStackCmd =
pure CLI.LocalStackCmd
parseEndpoint :: OA.Parser (ByteString, Int, Bool)
parseEndpoint =
(,,)
<$> do OA.option (OA.eitherReader (AWS.fromText . T.pack)) $ mconcat
[ OA.long "host-name-override"
, OA.help "Override the host name (default: s3.amazonaws.com)"
, OA.metavar "HOST_NAME"
]
<*> do OA.option OA.auto $ mconcat
[ OA.long "host-port-override"
, OA.help "Override the host port"
, OA.metavar "HOST_PORT"
]
<*> do OA.option OA.auto $ mconcat
[ OA.long "host-ssl-override"
, OA.help "Override the host SSL"
, OA.metavar "HOST_SSL"
]