court-0.1.0.0: plugins/Darcs.hs
import Control.Applicative
import Control.Concurrent
import Control.Monad
import Data.List
import System.Directory
import System.Environment
import System.Exit
import System.FilePath
import System.IO
import System.Process
main :: IO ()
main = do
hSetBuffering stdout LineBuffering
hSetBuffering stderr LineBuffering
args <- getArgs
repo <- case args of
[] -> hPutStrLn stderr "Please pass the repository as argument" >> exitFailure
r : _ -> return r
testRepoPath <- (</> "test-repo") <$> getCurrentDirectory
checkExistence <- doesDirectoryExist testRepoPath
unless checkExistence $ do
hPutStrLn stderr $ "Getting " ++ repo ++ " ..."
exitCode <- rawSystem "darcs" ["get", repo, testRepoPath, "--lazy"]
unless (exitCode == ExitSuccess) $ exitWith exitCode
setCurrentDirectory testRepoPath
forever $ do
hPutStrLn stderr "Checking ..."
output <- readProcess "darcs" ["pull", "--all"] ""
unless ("No remote changes to pull in" `isInfixOf` output) $ putStrLn testRepoPath
threadDelay $ 30 * 1000 * 1000