summaryrefslogtreecommitdiff
path: root/Run/Que/Website.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Run/Que/Website.hs')
-rw-r--r--Run/Que/Website.hs45
1 files changed, 45 insertions, 0 deletions
diff --git a/Run/Que/Website.hs b/Run/Que/Website.hs
new file mode 100644
index 0000000..1de6bca
--- /dev/null
+++ b/Run/Que/Website.hs
@@ -0,0 +1,45 @@
+-- | spawns a few processes that serve the que.run website
+module Run.Que.Website where
+
+import Prelude
+import System.Environment as Environment
+import System.FilePath ( (</>) )
+import qualified System.Process as Process
+
+main :: IO ()
+main = do
+ args <- Environment.getArgs
+ let [src, ns] = if length args == 2
+ then take 2 args
+ else if length args == 1
+ then args ++ ["/"]
+ else error "usage: que-website <srcdir> [namespace]"
+ homepage <- getHomepageHtml (src </> "style.css") (src </> "index.md")
+ client <- readFile $ src </> "client.py"
+ putStrLn $ "serving " ++ src ++ " at " ++ ns
+ loop ns homepage client
+
+loop :: String -> FilePath -> FilePath -> IO ()
+loop ns homepage client =
+ serve (ns </> "index.html") homepage
+ >> serve (ns </> "_client/python") client
+ >> loop ns homepage client
+
+getHomepageHtml :: String -> String -> IO String
+getHomepageHtml style index = Process.readProcess
+ "pandoc"
+ [ "--self-contained"
+ , "--css"
+ , style
+ , "-i"
+ , index
+ , "--from"
+ , "markdown"
+ , "--to"
+ , "html"
+ ]
+ []
+
+serve :: FilePath -> FilePath -> IO ()
+serve path file =
+ Process.callProcess "curl" ["https://que.run" ++ path, "-d", file]