packages feed

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