37 lines
930 B
Haskell
37 lines
930 B
Haskell
module Main where
|
|
|
|
import Control.Applicative
|
|
import Control.Monad
|
|
|
|
import qualified Brick as B
|
|
import qualified Options.Applicative as O
|
|
|
|
import TaskMachine.LTask
|
|
import TaskMachine.UI
|
|
import TaskMachine.UI.Types
|
|
|
|
newtype Options = Options
|
|
{ oTodofile :: FilePath
|
|
} deriving (Show)
|
|
|
|
opts :: O.Parser Options
|
|
opts = pure Options
|
|
<*> todofile
|
|
where
|
|
todofile = O.strArgument
|
|
( O.help "The file containing all your tasks"
|
|
<> O.metavar "TODOFILE"
|
|
)
|
|
|
|
optsInfo :: O.ParserInfo Options
|
|
optsInfo = O.info (opts <**> O.helper) O.fullDesc
|
|
-- <> O.progDesc "program description"
|
|
-- <> O.header "help header"
|
|
|
|
main :: IO()
|
|
main = do
|
|
o <- O.execParser optsInfo
|
|
result <- loadLTasks (oTodofile o)
|
|
case result of
|
|
Left parseError -> putStrLn parseError
|
|
Right tasks -> void $ B.defaultMain (myApp defaultTheme) (startUIState tasks)
|