groot-0.0.1.0: src/Groot/CLI/List.hs
module Groot.CLI.List
( ListSubCmd
, listCmds
, runListCmd
) where
import Data.Semigroup ((<>))
import Options.Applicative
import Groot.CLI.Common
import Groot.CLI.List.Cluster
import Groot.CLI.List.ContainerInstance
import Groot.CLI.List.ContainerService
import Groot.CLI.List.Task
import Groot.CLI.List.TaskDef
import Groot.Core
import Groot.Types
data ListSubCmd =
ListClustersCmd (Maybe ClusterRef)
| ListInstancesCmd (Maybe ClusterRef)
| ListTasksCmd ListTaskOpts
| ListTaskDefsCmd ListTaskDefsOpts
| ListServicesCmd (Maybe ClusterRef)
deriving (Eq, Show)
listClustersCmd :: Parser ListSubCmd
listClustersCmd = ListClustersCmd <$> optional clusterOpt
listInstancesCmd :: Parser ListSubCmd
listInstancesCmd = ListInstancesCmd <$> optional clusterOpt
listTasksCmd :: Parser ListSubCmd
listTasksCmd = ListTasksCmd <$> listTaskOpts
listTaskDefsCmd :: Parser ListSubCmd
listTaskDefsCmd = ListTaskDefsCmd <$> listTaskDefsOpts
listServicesCmd :: Parser ListSubCmd
listServicesCmd = ListServicesCmd <$> optional clusterOpt
listCmds :: Parser ListSubCmd
listCmds = hsubparser
( command "clusters" (info listClustersCmd (progDesc "List clusters"))
<> command "instances" (info listInstancesCmd (progDesc "List instances"))
<> command "tasks" (info listTasksCmd (progDesc "List tasks"))
<> command "taskDefs" (info listTaskDefsCmd (progDesc "List task definitions"))
<> command "services" (info listServicesCmd (progDesc "List services"))
)
runListCmd :: ListSubCmd -> GrootM IO ()
runListCmd (ListClustersCmd clusterId) = printClusterSummary clusterId
runListCmd (ListInstancesCmd clusterId) = printInstanceSummary clusterId
runListCmd (ListTasksCmd opts) = printTaskSummary opts
runListCmd (ListServicesCmd clusterId) = printServiceSummary clusterId
runListCmd (ListTaskDefsCmd opts) = printTaskDefsSummary opts