import Development.Shake import Development.Shake.Command import Development.Shake.FilePath import Development.Shake.Util main = shakeArgs shakeOptions $ do action $ do sourceFiles <- getDirectoryFiles "" ["//*.scm"] need $ (-<.> "cps") <$> sourceFiles alternatives $ do "*.cps" %> \out -> do let scm = out -<.> "scm" need [scm] Stdout cps0 <- cmd "csc -debug 3" [scm] Stdout cps1 <- cmd "sed -e" ["s/##core#lambda/κ/g;s/lambda/λ/g;/\\[cps\\]/d"] (Stdin cps0) writeFile' out $ ";; -*- mode:scheme -*-\n" ++ cps1 phony "clean" $ do removeFilesAfter ".shake" ["//*"] liftIO $ removeFiles "." ["*.cps"]