From a5d134dbfd55fe73cf798f052057ad5e3e0b547c Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 23 Nov 2022 11:26:03 +1100 Subject: updated a bit for compliance run --- app/Main.hs | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) (limited to 'app/Main.hs') diff --git a/app/Main.hs b/app/Main.hs index fa816ae..8dd0f47 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,3 +1,23 @@ +{- +Copyright (C) 2022 Yuchen Pei. + +This file is part of librejserver. + +librejserver is free software: you can redistribute it and/or modify it under +the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +librejserver is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General +Public License for more details. + +You should have received a copy of the GNU Affero General Public +License along with librejserver. If not, see . + +-} + {-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} @@ -7,6 +27,7 @@ import Data.Proxy ( Proxy(..) ) import Data.Text ( Text ) import qualified Data.Text as T import Network.Wai.Handler.Warp ( run ) +import Paths_librejserver import Servant ( (:>) , Application , CaptureAll @@ -16,7 +37,13 @@ import Servant ( (:>) , Server , serve ) -import System.Process ( readProcess ) +import System.IO ( hGetContents ) +import System.Process ( CreateProcess(..) + , createProcess + , proc + , readCreateProcess + , readProcess + ) type API = GetPageCompliance @@ -25,17 +52,25 @@ type GetPageCompliance = CaptureAll "url" Text :> Get '[JSON] Text server :: Server API server = getPageCompliance +-- TODO: use runCompliance once that function is fixed. getPageCompliance :: [Text] -> Handler Text getPageCompliance urlPieces = return $ "You have requested librejs-compliance info for " <> T.intercalate "/" urlPieces +-- FIXME: not working: selenium webdriver says +-- Error: Server terminated early with status 127 runCompliance :: Text -> IO Text -runCompliance url = T.pack <$> readProcess - "bin/node" - ["~/source/librejserver/librejs/utilities/compliance.js", T.unpack url] - "" +runCompliance url = do + dataDir <- getDataDir + T.pack + <$> readCreateProcess + (proc "node" ["./utilities/compliance.js", T.unpack url]) + { cwd = Just (dataDir ++ "/librejs") + , env = Just [("PATH", "$PATH:./node_modules/.bin")] + } + [] app :: Application app = serve api server -- cgit v1.2.3