hjugement-cli-0.0.0.20190815: 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.Monad (Monad(..))
import Data.Bool
import Data.Function (($))
import Data.Semigroup (Semigroup(..))
import Data.Text (Text)
import Data.Void (Void)
import Symantic.CLI as CLI
import qualified Data.Text as Text
import qualified Data.Version as Version
import qualified Paths_hjugement_cli as Hjugement
import qualified Symantic.Document as Doc
import Hjugement.CLI.Utils
import Hjugement.CLI.Administrator
import Hjugement.CLI.Registrar
import Hjugement.CLI.Trustee
import Hjugement.CLI.Voter
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 <!>
api_voter
run_agent params =
run_administrator params :!:
run_trustee params :!:
run_registrar params :!:
run_voter 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