packages feed

cloudy-0.1.0.0: src/Cloudy/Cli/Aws.hs

module Cloudy.Cli.Aws where

import Options.Applicative (Parser, command, info, progDesc, hsubparser)

data AwsCliOpts
  = AwsCreate AwsCreateCliOpts
  | AwsListInstanceTypes AwsListInstanceTypesCliOpts
  deriving stock Show

data AwsCreateCliOpts = AwsCreateCliOpts
  deriving stock Show

data AwsListInstanceTypesCliOpts = AwsListInstanceTypesCliOpts
  deriving stock Show

awsCliOptsParser :: Parser AwsCliOpts
awsCliOptsParser = hsubparser subParsers
  where
    subParsers = createCommand <> listInstanceTypesCommand

    createCommand =
      command
        "create"
        ( info
            (fmap AwsCreate awsCreateCliOptsParser)
            (progDesc "Create a new compute instance in AWS")
        )

    listInstanceTypesCommand =
      command
        "list-instance-types"
        ( info
            (fmap AwsListInstanceTypes awsListInstanceTypesCliOptsParser)
            (progDesc "List all instance types in AWS")
        )

awsCreateCliOptsParser :: Parser AwsCreateCliOpts
awsCreateCliOptsParser = pure AwsCreateCliOpts

awsListInstanceTypesCliOptsParser :: Parser AwsListInstanceTypesCliOpts
awsListInstanceTypesCliOptsParser = pure AwsListInstanceTypesCliOpts