on bb7772e help sign in
43 lines 1.1 kB history raw
1module CompaREST.GitHub.Action.Config
2 ( Config (..),
3 )
4where
6import Data.Proxy
7import Data.Text (Text)
8import qualified Data.Text as T
9import qualified GitHub as GH
11import System.Envy
13data Config = Config
14 { githubToken :: GH.Auth
15 , repoOwner :: GH.Name GH.Owner
16 , repoName :: GH.Name GH.Repo
17 , projectName :: Text
18 , footerText :: Text
19 , root :: FilePath
20 , sha :: GH.Name GH.Commit
21 }
23instance FromEnv Config where
24 fromEnv _ = do
25 token <- GH.OAuth <$> env "GITHUB_TOKEN"
26 (owner, repo) <-
27 T.split (== '/') <$> env "REPO" >>= \case
28 [owner, name] -> pure (owner, name)
29 _ -> fail "malformed repo"
30 projectName <- env "PROJECT_NAME"
31 footerText <- env "FOOTER"
32 root <- envMaybe "ROOT" .!= "."
33 sha <- env "SHA"
34 pure $
35 Config
36 { githubToken = token
37 , repoOwner = GH.mkName Proxy owner
38 , repoName = GH.mkName Proxy repo
39 , projectName = projectName
40 , footerText = footerText
41 , root = root
42 , sha = GH.mkName Proxy sha
43 }