nemesis-2009.6.13.2: src/System/Nemesis/Runner.hs
import Prelude hiding ((.), (>), (^))
import System.Cmd
import System.Nemesis.Util
start, end, sep_block :: String
sep_block = "\n\n\n\n"
start = sep_block ++ start_nemesis ++ start_nemesis_dsl
where
start_nemesis = "import System.Nemesis (run)\n"
start_nemesis_dsl = "import System.Nemesis.DSL\n"
end = sep_block ++ "main = run nemesis\n"
main :: IO ()
main = do
dir <- ls "."
src <- readFile $ dir.filter (belongs_to possible_source) .get_name
let h = src.lines.takeWhile (lower > starts_with sep > not) .unlines
t = src.lines.dropWhile (lower > starts_with sep > not) .unlines
if t.null
then output $ start ++ h ++ end
else output $ h ++ start ++ t ++ end
system $ "ghc --make -O1 " ++ tmp_name ++ " -o " ++ bin
rm tmp_name
rm tmp_o
rm tmp_hi
where
get_name [] = error "Nemesis does not exists"
get_name xs = xs.first
possible_source = ["Nemesis", "nemesis", "nemesis.hs", "Nemesis.hs"]
sep = "-- nem"
output = writeFile tmp_name
tmp_name = "nemesis-tmp.hs"
tmp_o = "nemesis-tmp.o"
tmp_hi = "nemesis-tmp.hi"
bin = "nem"