{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE NoImplicitPrelude #-} -- : out jr module Omni.Jr where import Alpha import qualified Omni.Cli as Cli import qualified Omni.Task as Task import System.Environment (withArgs) import qualified Omni.Test as Test import qualified System.Console.Docopt as Docopt 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 ]