]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - Rakka/Environment.hs
Fixing build breakage...
[Rakka.git] / Rakka / Environment.hs
index 1941939d175e7355d5a0e7bb491719cd28876c7c..9a6df3a396fd3276156178227adcfcc22bab926f 100644 (file)
@@ -5,24 +5,29 @@ module Rakka.Environment
     )
     where
 
+import           Control.Arrow
+import           Control.Arrow.ArrowList
 import qualified Data.Map as M
-import           Network
+import           Network.Socket
 import qualified Network.HTTP.Lucu.Config as LC
+import           Rakka.Authorization
+import           Rakka.Page
 import           Rakka.Storage
 import           Rakka.SystemConfig
 import           Rakka.Wiki.Engine
 import           Rakka.Wiki.Interpreter
 import qualified Rakka.Wiki.Interpreter.Base      as Base
 import qualified Rakka.Wiki.Interpreter.Image     as Image
-import qualified Rakka.Wiki.Interpreter.Trackback as Trackback
+import qualified Rakka.Wiki.Interpreter.PageList  as PageList
 import qualified Rakka.Wiki.Interpreter.Outline   as Outline
 import           Subversion.Repository
 import           System.Directory
 import           System.FilePath
-import           System.IO
 import           System.Log.Logger
+import           Text.HyperEstraier
 
 
+logger :: String
 logger = "Rakka.Environment"
 
 
@@ -33,13 +38,14 @@ data Environment = Environment {
     , envSysConf       :: !SystemConfig
     , envStorage       :: !Storage
     , envInterpTable   :: !InterpTable
+    , envAuthDB        :: !AuthDB
     }
 
 
-setupEnv :: FilePath -> PortNumber -> IO Environment
+setupEnv :: FilePath -> ServiceName -> IO Environment
 setupEnv lsdir portNum
     = do let lucuConf    = LC.defaultConfig {
-                             LC.cnfServerPort = PortNumber portNum
+                             LC.cnfServerPort = portNum
                            }
              reposPath   = lsdir </> "repos"
              interpTable = mkInterpTable
@@ -52,23 +58,38 @@ setupEnv lsdir portNum
                             do noticeM logger ("Creating a subversion repository on " ++ reposPath)
                                createRepository reposPath [] []
          sysConf     <- mkSystemConfig lucuConf repos
-         storage     <- mkStorage lsdir repos (makeDraft interpTable)
+         storage     <- mkStorage lsdir repos (makeDraft' interpTable)
+         authDB      <- mkAuthDB lsdir
 
-         return Environment {
+         return Environment {
                       envLocalStateDir = lsdir
                     , envLucuConf      = lucuConf
                     , envRepository    = repos
                     , envSysConf       = sysConf
                     , envStorage       = storage
                     , envInterpTable   = interpTable
+                    , envAuthDB        = authDB
                     }
+    where
+      makeDraft' :: InterpTable -> Page -> IO Document
+      makeDraft' interpTable page
+          = do [doc] <- runX ( setErrorMsgHandler False fail
+                               >>>
+                               constA page
+                               >>>
+                               xmlizePage
+                               >>>
+                               makeDraft interpTable
+                             )
+               return doc
 
 
 mkInterpTable :: InterpTable
 mkInterpTable = listToTable $
                 foldl (++) [] [ Base.interpreters
                               , Image.interpreters
-                              , Trackback.interpreters
+                              , PageList.interpreters
+                              --, Trackback.interpreters
                               , Outline.interpreters
                               ]
     where