compaREST-0.1.0.0: github-action/CompaREST/GitHub/Action/Config.hs
module CompaREST.GitHub.Action.Config
( Config (..),
)
where
import Data.Proxy
import Data.Text (Text)
import qualified Data.Text as T
import qualified GitHub as GH
import Data.Functor
import System.Envy
data Config = Config
{ githubToken :: GH.Auth
, repoOwner :: GH.Name GH.Owner
, repoName :: GH.Name GH.Repo
, checkName :: Text
, footerText :: Text
, root :: FilePath
, sha :: GH.Name GH.Commit
}
instance FromEnv Config where
fromEnv _ = do
token <- GH.OAuth <$> env "GITHUB_TOKEN"
(owner, repo) <-
T.split (== '/') <$> env "REPO" >>= \case
[owner, name] -> pure (owner, name)
_ -> fail "malformed repo"
checkName <-
envMaybe "PROJECT_NAME" <&> \case
Just pName | not . T.null . T.strip $ pName -> "compaREST – " <> pName
_ -> "compaREST"
footerText <- env "FOOTER"
root <- envMaybe "ROOT" .!= "."
sha <- env "SHA"
pure $
Config
{ githubToken = token
, repoOwner = GH.mkName Proxy owner
, repoName = GH.mkName Proxy repo
, checkName = checkName
, footerText = footerText
, root = root
, sha = GH.mkName Proxy sha
}