{-# 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