{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE PartialTypeSignatures #-}
import Distribution.Simple
import Distribution.PackageDescription (HookedBuildInfo, emptyHookedBuildInfo)
-- import Language.PureScript.Make
-- import Language.PureScript.Names
-- import Language.PureScript.Options
-- import Language.PureScript.AST.Declarations
-- import Language.PureScript.Parser.Declarations (parseModulesFromFiles)
import System.Process
-- import qualified Data.Map as M
-- import qualified Data.Text as T
-- import Data.Text.Encoding
-- import Data.Maybe (fromJust)
-- import qualified Data.ByteString.Lazy as BL
-- import qualified Data.ByteString as BS
import Debug.Trace
main = defaultMainWithHooks simpleUserHooks
{ -- preBuild = preBuild'
preConf = preConf'
}
preConf' :: _ -> _ -> IO HookedBuildInfo
preConf' _ _ = do
traceIO "Installing purescript dependencies"
run11 <- readProcess "/usr/local/bin/bower" ["install"] []
run12 <- readProcess "/usr/bin/npm" ["install", "crypto-js"] []
traceIO "Compiling purescript files"
run21 <- readProcess "/bin/mkdir" ["-p", "static/js"] []
run22 <- readProcess "/usr/local/bin/pulp" ["browserify" , "-t" , "static/js/auth.js"] []
return emptyHookedBuildInfo
-- preBuild' :: _ -> _ -> IO HookedBuildInfo
-- preBuild' _ _ = do
-- exts <- runMake defaultOptions $ do
-- traceM "im in here!"
-- !src <- makeIO (const $ error "error") $ glob "src/*.purs"
-- traceM $ show src
-- traceM "reading in sources"
-- !dep <- makeIO (const $ error "error") $ glob
-- "bower_components/purescript-*/src/**/*.purs"
-- traceM $ show dep
-- traceM "reading in dependencies"
-- !content <- zip [1..] <$> mapM (\s -> do
-- cont <- readTextFile s
-- return $ decodeUtf8 $ toStrict cont
-- ) (dep ++ src)
-- !mods <- parseModulesFromFiles
-- (fromJust . flip lookup (zip [1..] (dep ++ src)))
-- content
-- let !srcMap = M.fromList $ zip (map getModuleName $ map snd mods)
-- (map Right (dep ++ src))
-- traceM "building srcMap"
-- !fgn <- inferForeignModules srcMap
-- traceM "infering foreign modules"
-- let !ma = buildMakeActions "static/js" srcMap fgn True
-- traceM "built MakeActions"
-- traceM "parsing modules"
-- make ma (map snd mods)
-- traceM "made"
-- traceM $ show exts
-- return emptyHookedBuildInfo
--
-- toStrict :: BL.ByteString -> BS.ByteString
-- toStrict = BS.concat . BL.toChunks