about summary refs log tree commit diff
path: root/blog/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'blog/Main.hs')
-rw-r--r--blog/Main.hs38
1 files changed, 38 insertions, 0 deletions
diff --git a/blog/Main.hs b/blog/Main.hs
new file mode 100644
index 000000000000..a50ca67ed17d
--- /dev/null
+++ b/blog/Main.hs
@@ -0,0 +1,38 @@
+module Main where
+
+import           Control.Applicative          (pure, (<$>), (<*>))
+import           Control.Exception            (bracket)
+import           Data.Acid
+import           Data.Acid.Local (createCheckpointAndClose)
+import           Options
+
+import           BlogDB                       (initialBlogState)
+import           Locales                      (version)
+import           Server
+
+{- Server -}
+
+data MainOptions = MainOptions {
+  optState :: String,
+  optPort  :: Int,
+  optRes   :: String
+}
+
+instance Options MainOptions where
+  defineOptions = pure MainOptions
+    <*> simpleOption "statedir" "/var/tazblog/"
+        "Directory in which the BlogState is located."
+    <*> simpleOption "port" 8000
+        "Port to run on. Default is 8000."
+    <*> simpleOption "res" "/usr/share/tazblog/res"
+        "Resources folder location."
+        
+main :: IO()
+main = do
+    putStrLn ("TazBlog " ++ version ++ " in Haskell starting")
+    runCommand $ \opts args ->
+      bracket (openLocalStateFrom (optState opts ++ "BlogState") initialBlogState)
+              createCheckpointAndClose
+              (\acid -> runBlog acid (optPort opts) (optRes opts))
+
+