Working dotenv configuration

This commit is contained in:
James Eversole 2024-02-18 13:41:43 -06:00
parent 3e81ea8fec
commit aea0e6dfc8
6 changed files with 29 additions and 9 deletions

2
.gitignore vendored
View File

@ -5,7 +5,7 @@
Dockerfile
WD
bin/
data/
data/posts
dist*
docker-stack.yml
result

2
data/.env.example Normal file
View File

@ -0,0 +1,2 @@
APPLICATIONPORT="3000"
BLOGTITLE="Anon's Blog"

View File

@ -16,12 +16,14 @@ executable sampu
build-depends: base
, bytestring >= 0.11.5.0
, commonmark >= 0.2.4
, dotenv >= 0.11.0.0
, lucid >= 2.11.0
, twain >= 2.1.0.0
, wai-extra >= 3.0 && < 3.2
, warp == 3.3.25
hs-source-dirs: src
other-modules:
Core.Configuration
Core.Handlers
Core.HTTP
Core.Rendering

17
src/Core/Configuration.hs Normal file
View File

@ -0,0 +1,17 @@
module Core.Configuration where
import Configuration.Dotenv
import System.Environment (getEnv, lookupEnv)
main :: IO ()
main = do
envFile <- lookupEnv "NOENVFILE"
case envFile of
Nothing -> loadFile defaultConfig
_ -> putStrLn "Not using dotenv"
appPort :: IO String
appPort = getEnv "APPLICATIONPORT"
appTitle :: IO String
appTitle = getEnv "BLOGTITLE"

View File

@ -1,6 +1,7 @@
module Core.HTTP where
import qualified Core.Handlers as Handle
import qualified Core.Configuration as Conf
import qualified Core.Handlers as Handle
import Network.Wai.Middleware.RequestLogger (logStdoutDev)
import Network.Wai.Handler.Warp (Port, run)
@ -8,7 +9,8 @@ import Web.Twain
main :: IO ()
main = do
run appPort $
port <- Conf.appPort
run (read port :: Int) $
foldr ($) (notFound Handle.missing) app
-- Combine our Preprocessor Middlewares and Routes to create an App
@ -25,7 +27,3 @@ routes =
[ get "/" Handle.index
, get "/echo/:testParam" Handle.testRoute
]
-- This will be replaced with getEnv located in Configuration
appPort :: Port
appPort = 3000

View File

@ -1,6 +1,7 @@
module Main where
import qualified Core.HTTP as Core
import qualified Core.HTTP as Core
import qualified Core.Configuration as Conf
main :: IO ()
main = Core.main
main = Conf.main >>= (\_ -> Core.main)