import Network.HTTP.Lucu
import Rakka.Environment
import Rakka.Resource.Index
+import Rakka.Resource.JavaScript
+import Rakka.Resource.PageEntity
import Rakka.Resource.Object
-import Rakka.Resource.Render
+import Rakka.Storage
import Subversion
import System.Console.GetOpt
import System.Directory
import System.Posix.Types
import System.Posix.User
+
+logger :: String
logger = "Main"
| OptGroupName String
| OptLogLevel Priority
| OptDisableStderrLog
+ | OptRebuildIndex
| OptHelp
deriving (Eq, Show)
(NoArg OptDisableStderrLog)
("Disable logging to stderr.")
+ , Option [] ["rebuild-index"]
+ (NoArg OptRebuildIndex)
+ ("Rebuild the index database.")
+
, Option ['h'] ["help"]
(NoArg OptHelp)
"Print this message."
setupLogger opts
env <- setupEnv lsdir portNum
- noticeM logger ("Listening to " ++ show portNum ++ "/tcp...")
- runHttpd (envLucuConf env) (resTree env) [fallbackRender env]
+ rebuildIndexIfRequested env opts
+
+ infoM logger ("Listening to " ++ show portNum ++ "/tcp...")
+ runHttpd (envLucuConf env) (resTree env) [fallbackPageEntity env]
resTree :: Environment -> ResTree
resTree env
= mkResTree [ ([] , resIndex env)
, (["object"], resObject env)
+ , (["js" ], javaScript )
]
createLocalStateDir path uid gid
= do createDirectoryIfMissing True path
setOwnerAndGroup path uid gid
+
+
+rebuildIndexIfRequested :: Environment -> [CmdOpt] -> IO ()
+rebuildIndexIfRequested env opts
+ = do let rebuild = isJust $ find (\ x -> case x of
+ OptRebuildIndex -> True
+ _ -> False) opts
+ when rebuild
+ $ rebuildIndex (envStorage env)
\ No newline at end of file