hjugement-cli-0.0.0.20190721: src/Hjugement/CLI.hs
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# OPTIONS_GHC -Wno-missing-signatures #-}
module Hjugement.CLI where
import Control.Applicative (Applicative(..), Alternative(..))
import Control.Monad (Monad(..))
import Data.Bool
import Data.Either (Either(..))
import Data.Function (($), (.))
import Data.Functor ((<$>), (<$))
import Data.Int (Int)
import Data.List.NonEmpty (NonEmpty(..))
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Ord (Ord(..))
import Data.Semigroup (Semigroup(..))
import Data.String (String)
import Data.Text (Text)
import Data.Void (Void)
import Symantic.CLI as CLI
import System.Environment (getArgs)
import System.IO (IO, FilePath, print, stderr, putStrLn)
import Text.Show (Show(..))
import Type.Reflection (Typeable)
import qualified Data.Set as Set
import qualified Data.Text as Text
import qualified Data.Text.Lazy.IO as TL
import qualified Data.Version as Version
import qualified Paths_hjugement_cli as Hjugement
import qualified Symantic.Document as Doc
import qualified System.IO as IO
import Hjugement.CLI.Utils
import Hjugement.CLI.Administrator
import Hjugement.CLI.Registrar
import Hjugement.CLI.Trustee
progname :: Text
progname = "hjugement"
api =
program "hjugement" $
(api_options <?> api_agent) <!>
api_help True <!>
api_version
run =
run_agent :!:
run_help api :!:
run_version
api_agent =
rule "AGENT" $
api_administrator <!>
api_trustee <!>
api_registrar
run_agent params =
run_administrator params :!:
run_trustee params :!:
run_registrar params
api_version =
"Print the version."
`helps`
tag (TagLong "version") nothing
<.> response @Doc
run_version =
return (Doc.from version <> Doc.newline)
version :: Text
version =
progname <> "-" <>
Text.pack (Version.showVersion Hjugement.version)
parseAPI = parser @Void @Doc api run