From c9eaf846949a8b98fb7a329897139b27fda784af Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 17 Jul 2011 21:04:26 +0300 Subject: [PATCH] configure and build, using command line --- Scaffold/Build.hs | 3 +-- Scaffold/Devel.hs | 6 ++++-- scaffold.hs | 19 +++++++++++++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Scaffold/Build.hs b/Scaffold/Build.hs index be343486..b38b3b56 100644 --- a/Scaffold/Build.hs +++ b/Scaffold/Build.hs @@ -1,7 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} module Scaffold.Build - ( build - , touch + ( touch , getDeps , touchDeps , findHaskellFiles diff --git a/Scaffold/Devel.hs b/Scaffold/Devel.hs index e6c50345..49879c84 100644 --- a/Scaffold/Devel.hs +++ b/Scaffold/Devel.hs @@ -43,8 +43,10 @@ swapApp i f = do I.readIORef i >>= killThread f >>= I.writeIORef i -devel :: IO () -devel = do +devel :: ([String] -> IO ()) -- ^ configure command + -> ([String] -> IO ()) -- ^ build command + -> IO () +devel conf build = do e <- doesFileExist "dist/devel-flag" when e $ removeFile "dist/devel-flag" listenThread <- forkIO (appMessage "Initializing, please wait") >>= I.newIORef diff --git a/scaffold.hs b/scaffold.hs index c76fe7b7..24fff92b 100644 --- a/scaffold.hs +++ b/scaffold.hs @@ -13,9 +13,11 @@ import qualified Data.Text.Lazy.Encoding as LT import Control.Monad (when, unless) import System.Environment (getArgs) -import Scaffold.Build (build, touch) +import Scaffold.Build (touch) import Scaffold.Devel (devel) +import System.Process (rawSystem) + qq :: String #if __GLASGOW_HASKELL__ >= 700 qq = "" @@ -34,16 +36,25 @@ prompt f = do main :: IO () main = do - args <- getArgs + args' <- getArgs + let (isDev, args) = + case args' of + "--dev":rest -> (True, rest) + _ -> (False, args') + let cmd = if isDev then "cabal-dev" else "cabal" + let conf rest = rawSystem cmd ("configure":rest) >> return () + let build rest = rawSystem cmd ("build":rest) >> return () case args of ["init"] -> scaffold - ["build"] -> build + "build":rest -> touch >> build rest ["touch"] -> touch - ["devel"] -> devel + ["devel"] -> devel conf build + "configure":rest -> conf rest _ -> do putStrLn "Usage: yesod " putStrLn "Available commands:" putStrLn " init Scaffold a new site" + putStrLn " configure Configure a project for building" putStrLn " build Build project (performs TH dependency analysis)" putStrLn " touch Touch any files with altered TH dependencies but do not build" putStrLn " devel Run project with the devel server"