module Cloudy.Cmd where

import Cloudy.Cli (CliCmd (..))
import Cloudy.Cmd.Aws (runAws)
import Cloudy.Cmd.CopyFile (runCopyFile)
import Cloudy.Cmd.List (runList)
import Cloudy.Cmd.Scaleway (runScaleway)
import Cloudy.Cmd.Ssh (runSsh)
import Cloudy.Cmd.Destroy (runDestroy)
import Cloudy.LocalConfFile (LocalConfFileOpts)

runCmd :: LocalConfFileOpts -> CliCmd -> IO ()
runCmd :: LocalConfFileOpts -> CliCmd -> IO ()
runCmd LocalConfFileOpts
localConfFileOpts = \case
  Aws AwsCliOpts
awsCliOpts -> LocalConfFileOpts -> AwsCliOpts -> IO ()
runAws LocalConfFileOpts
localConfFileOpts AwsCliOpts
awsCliOpts
  List ListCliOpts
listCliOpts -> LocalConfFileOpts -> ListCliOpts -> IO ()
runList LocalConfFileOpts
localConfFileOpts ListCliOpts
listCliOpts
  Scaleway ScalewayCliOpts
scalewayCliOpts -> LocalConfFileOpts -> ScalewayCliOpts -> IO ()
runScaleway LocalConfFileOpts
localConfFileOpts ScalewayCliOpts
scalewayCliOpts
  Ssh SshCliOpts
sshCliOpts -> LocalConfFileOpts -> SshCliOpts -> IO ()
runSsh LocalConfFileOpts
localConfFileOpts SshCliOpts
sshCliOpts
  CopyFile CopyFileCliOpts
copyFileCliOpts -> LocalConfFileOpts -> CopyFileCliOpts -> IO ()
runCopyFile LocalConfFileOpts
localConfFileOpts CopyFileCliOpts
copyFileCliOpts
  Destroy DestroyCliOpts
destroyCliOpts -> LocalConfFileOpts -> DestroyCliOpts -> IO ()
runDestroy LocalConfFileOpts
localConfFileOpts DestroyCliOpts
destroyCliOpts