toodles-0.1.1: app/Config.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
module Config
( toodlesArgs
, ToodlesArgs(..)
, SearchFilter(..)
, AssigneeFilterRegex(..)
)
where
import Paths_toodles
import Types
import Data.Text (Text)
import Data.Version (showVersion)
import System.Console.CmdArgs
toodlesArgs :: IO ToodlesArgs
toodlesArgs = cmdArgs argParser
data ToodlesArgs = ToodlesArgs
{ directory :: FilePath
, assignee_search :: Maybe SearchFilter
, limit_results :: Int
, port :: Maybe Int
, no_server :: Bool
, userFlag :: [UserFlag]
} deriving (Show, Data, Typeable, Eq)
newtype SearchFilter =
AssigneeFilter AssigneeFilterRegex
deriving (Show, Data, Eq)
newtype AssigneeFilterRegex = AssigneeFilterRegex Text
deriving (Show, Data, Eq)
argParser :: ToodlesArgs
argParser = ToodlesArgs
{ directory = def &= typFile &= help "Root directory of your project"
, assignee_search = def &= help "Filter todo's by assignee"
, limit_results = def &= help "Limit number of search results"
, port = def &= help "Run server on port"
, no_server = def &= help "Output matching todos to the command line and exit"
, userFlag = def &= help "Additional flagword (e.g.: MAYBE)"
} &= summary ("toodles " ++ showVersion version)
&= program "toodles"
&= verbosity
&= help "Manage TODO's directly from your codebase"