module Stackctl.Commands ( module Stackctl.Commands ) where import Stackctl.Prelude import Stackctl.AutoSSO import Stackctl.ColorOption import Stackctl.DirectoryOption import Stackctl.FilterOption import Stackctl.Spec.Capture import Stackctl.Spec.Cat import Stackctl.Spec.Changes import Stackctl.Spec.Deploy import Stackctl.Spec.List import Stackctl.Subcommand import Stackctl.VerboseOption import Stackctl.Version cat :: ( HasColorOption options , HasVerboseOption options , HasDirectoryOption options , HasFilterOption options , HasAutoSSOOption options ) => Subcommand options CatOptions cat :: forall options. (HasColorOption options, HasVerboseOption options, HasDirectoryOption options, HasFilterOption options, HasAutoSSOOption options) => Subcommand options CatOptions cat = Subcommand { name :: Text name = Text "cat" , description :: Text description = Text "Pretty-print specifications" , parse :: Parser CatOptions parse = Parser CatOptions parseCatOptions , run :: CatOptions -> options -> IO () run = forall options subOptions a. (HasColorOption options, HasVerboseOption options, HasAutoSSOOption options) => (subOptions -> AppT (App options) IO a) -> subOptions -> options -> IO a runAppSubcommand forall (m :: * -> *) env. (MonadMask m, MonadResource m, MonadLogger m, MonadReader env m, HasLogger env, HasAwsScope env, HasConfig env, HasDirectoryOption env, HasFilterOption env) => CatOptions -> m () runCat } capture :: ( HasColorOption options , HasVerboseOption options , HasDirectoryOption options , HasAutoSSOOption options ) => Subcommand options CaptureOptions capture :: forall options. (HasColorOption options, HasVerboseOption options, HasDirectoryOption options, HasAutoSSOOption options) => Subcommand options CaptureOptions capture = Subcommand { name :: Text name = Text "capture" , description :: Text description = Text "Capture deployed Stacks as specifications" , parse :: Parser CaptureOptions parse = Parser CaptureOptions parseCaptureOptions , run :: CaptureOptions -> options -> IO () run = forall options subOptions a. (HasColorOption options, HasVerboseOption options, HasAutoSSOOption options) => (subOptions -> AppT (App options) IO a) -> subOptions -> options -> IO a runAppSubcommand forall (m :: * -> *) env. (MonadMask m, MonadUnliftIO m, MonadResource m, MonadLogger m, MonadReader env m, HasAwsScope env, HasAwsEnv env, HasConfig env, HasDirectoryOption env) => CaptureOptions -> m () runCapture } changes :: ( HasColorOption options , HasVerboseOption options , HasDirectoryOption options , HasFilterOption options , HasAutoSSOOption options ) => Subcommand options ChangesOptions changes :: forall options. (HasColorOption options, HasVerboseOption options, HasDirectoryOption options, HasFilterOption options, HasAutoSSOOption options) => Subcommand options ChangesOptions changes = Subcommand { name :: Text name = Text "changes" , description :: Text description = Text "Review changes between specification and deployed state" , parse :: Parser ChangesOptions parse = Parser ChangesOptions parseChangesOptions , run :: ChangesOptions -> options -> IO () run = forall options subOptions a. (HasColorOption options, HasVerboseOption options, HasAutoSSOOption options) => (subOptions -> AppT (App options) IO a) -> subOptions -> options -> IO a runAppSubcommand forall (m :: * -> *) env. (MonadMask m, MonadUnliftIO m, MonadResource m, MonadLogger m, MonadReader env m, HasLogger env, HasAwsScope env, HasAwsEnv env, HasConfig env, HasDirectoryOption env, HasFilterOption env) => ChangesOptions -> m () runChanges } deploy :: ( HasColorOption options , HasVerboseOption options , HasDirectoryOption options , HasFilterOption options , HasAutoSSOOption options ) => Subcommand options DeployOptions deploy :: forall options. (HasColorOption options, HasVerboseOption options, HasDirectoryOption options, HasFilterOption options, HasAutoSSOOption options) => Subcommand options DeployOptions deploy = Subcommand { name :: Text name = Text "deploy" , description :: Text description = Text "Deploy specifications" , parse :: Parser DeployOptions parse = Parser DeployOptions parseDeployOptions , run :: DeployOptions -> options -> IO () run = forall options subOptions a. (HasColorOption options, HasVerboseOption options, HasAutoSSOOption options) => (subOptions -> AppT (App options) IO a) -> subOptions -> options -> IO a runAppSubcommand forall (m :: * -> *) env. (MonadMask m, MonadUnliftIO m, MonadResource m, MonadLogger m, MonadReader env m, HasLogger env, HasAwsScope env, HasAwsEnv env, HasConfig env, HasDirectoryOption env, HasFilterOption env) => DeployOptions -> m () runDeploy } list :: ( HasColorOption options , HasVerboseOption options , HasDirectoryOption options , HasFilterOption options , HasAutoSSOOption options ) => Subcommand options ListOptions list :: forall options. (HasColorOption options, HasVerboseOption options, HasDirectoryOption options, HasFilterOption options, HasAutoSSOOption options) => Subcommand options ListOptions list = Subcommand { name :: Text name = Text "ls" , description :: Text description = Text "List specifications" , parse :: Parser ListOptions parse = Parser ListOptions parseListOptions , run :: ListOptions -> options -> IO () run = forall options subOptions a. (HasColorOption options, HasVerboseOption options, HasAutoSSOOption options) => (subOptions -> AppT (App options) IO a) -> subOptions -> options -> IO a runAppSubcommand forall (m :: * -> *) env. (MonadUnliftIO m, MonadMask m, MonadResource m, MonadLogger m, MonadReader env m, HasAwsScope env, HasAwsEnv env, HasLogger env, HasConfig env, HasDirectoryOption env, HasFilterOption env) => ListOptions -> m () runList } version :: Subcommand options () version :: forall options. Subcommand options () version = Subcommand { name :: Text name = Text "version" , description :: Text description = Text "Output the version" , parse :: Parser () parse = forall (f :: * -> *) a. Applicative f => a -> f a pure () , run :: () -> options -> IO () run = \() options _ -> forall (m :: * -> *). MonadIO m => m () logVersion }