{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} module Main (main) where import Control.Monad (Monad(..)) import Data.Function ((.)) import Data.Monoid ((<>)) import qualified Data.Text.Lazy as TL import qualified System.Environment as Env import System.IO (IO) import qualified Text.WalderLeijen.ANSI.Text as W import qualified Hcompta.CLI.Args as Args import qualified Hcompta.CLI.Command as Command import qualified Hcompta.CLI.Context as C import qualified Hcompta.CLI.Lang as Lang import qualified Hcompta.CLI.Write as Write main :: IO () main = do (c, cmds) <- do c <- C.context Env.getArgs >>= Args.parse c Command.usage Command.options . (c,) case cmds of cmd:args -> Command.run c cmd args [] -> Command.usage c >>= Write.fatal c . ((C.translate c Lang.Error_One_command_is_required <> W.line) <>) . W.text . TL.pack