hercules-ci-cli-0.3.1: src/Hercules/CLI/Common.hs
module Hercules.CLI.Common
( runAuthenticated,
runAuthenticatedOrDummy,
exitMsg,
)
where
import Hercules.CLI.Client
import Hercules.CLI.Credentials (determineDomain, readToken, tryReadEffectToken)
import Hercules.CLI.Exception (exitMsg)
import Protolude
import RIO (RIO, runRIO)
import Servant.Auth.Client (Token (Token))
runAuthenticated :: RIO (HerculesClientToken, HerculesClientEnv) b -> IO b
runAuthenticated m = do
clientEnv <- Hercules.CLI.Client.init
token <- readToken determineDomain
runRIO (HerculesClientToken $ Token $ encodeUtf8 token, clientEnv) m
runAuthenticatedOrDummy ::
-- | Use fake credential if 'False'.
Bool ->
RIO (HerculesClientToken, HerculesClientEnv) b ->
IO b
runAuthenticatedOrDummy True = runAuthenticated
runAuthenticatedOrDummy False = \m -> do
clientEnv <- Hercules.CLI.Client.init
token <- fromMaybe "dummy-token" <$> tryReadEffectToken
runRIO (HerculesClientToken $ Token $ encodeUtf8 token, clientEnv) m