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 "*.cps" %> \out -> do withTempFile $ \temp_cps -> do let scm = out -<.> "scm" need [scm] cmd_ "guild compile -O0 -Ocps -t cps -o" [temp_cps] [scm] cmd_ (FileStdout out) (Stdin ";; -*- mode:scheme -*-\n") "cat -" [temp_cps] phony "clean" $ do removeFilesAfter ".shake" ["//*"] liftIO $ removeFiles "." ["*.cps","*.go"]