module Rob.Tasks where

import qualified Rob.Package as Package
import Rob.UserMessages (newTaskHelp, addTaskHelp, listTaskHelp, removeTaskHelp)
import qualified Rob.Types as Types (Task(..))

import System.Console.CmdArgs

list :: Types.Task
list = Types.List &= help listTaskHelp

-- | New task factory function
new :: Types.Task
new = Types.New &= help newTaskHelp

-- | New task factory function
remove :: Types.Task
remove = Types.Remove &= help removeTaskHelp

-- | Add task factory function
add :: Types.Task
add = Types.Add {
    Types.name = def &= typ "template-name" &= argPos 0,
    Types.path = def &= typ "path/to/the/template/folder" &= argPos 1
  } &= help addTaskHelp

-- | Export all the command line modes
mode :: Mode (CmdArgs Types.Task)
mode = cmdArgsMode $ modes [new, add, remove, list]
     &= help Package.description
     &= program Package.name
     &= summary (unwords [Package.name, "- v", Package.version, Package.author])