{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE NoImplicitPrelude #-} -- : out jr -- : dep sqlite-simple module Omni.Jr where import Alpha import qualified Omni.Cli as Cli import qualified Omni.Task as Task import qualified Omni.Test as Test import qualified System.Console.Docopt as Docopt import System.Environment (withArgs) main :: IO () main = Cli.main plan plan :: Cli.Plan () plan = Cli.Plan { Cli.help = help, Cli.move = move, Cli.test = test, Cli.tidy = \_ -> pure () } help :: Cli.Docopt help = [Cli.docopt| jr Usage: jr task [...] jr work [...] jr harvest [...] jr test jr (-h | --help) Commands: task Manage tasks work Track work harvest Harvest wealth Options: -h --help Show this help |] move :: Cli.Arguments -> IO () move args | args `Cli.has` Cli.command "task" = do let extraArgs = Cli.getAllArgs args (Cli.argument "args") withArgs extraArgs Task.main | args `Cli.has` Cli.command "work" = do putText "Work command not implemented yet" | args `Cli.has` Cli.command "harvest" = do putText "Harvest command not implemented yet" | otherwise = putText (str <| Docopt.usage help) test :: Test.Tree test = Test.group "Omni.Jr" [ Test.unit "can run tests" <| True Test.@?= True ]