pub const ATS_SHAKE: &'static str =
"#!/usr/bin/env stack\n-- stack runghc --resolver lts-10.0 --package shake --install-ghc\n\nimport Data.Maybe (fromMaybe)\nimport Data.Monoid\nimport Development.Shake\nimport System.Exit (ExitCode (..))\n\nmain :: IO ()\nmain = shakeArgs shakeOptions { shakeFiles=\".shake\" } $ do\n want [ \"target/{{ project }}\" ]\n\n \"target/{{ project }}\" %> \\_ -> do\n dats <- getDirectoryFiles \"\" [\"//*.dats\"]\n sats <- getDirectoryFiles \"\" [\"//*.sats\"]\n hats <- getDirectoryFiles \"\" [\"//*.hats\"]\n cats <- getDirectoryFiles \"\" [\"//*.cats\"]\n need $ dats <> sats <> hats <> cats\n cmd_ [\"mkdir\", \"-p\", \"target\"]\n let patshome = \"/usr/local/lib/ats2-postiats-0.3.8\"\n (Exit c, Stderr err) <- command [EchoStderr False, AddEnv \"PATSHOME\" patshome] \"patscc\" (dats ++ [\"-DATS_MEMALLOC_LIBC\", \"-o\", \"target/{{ project }}\", \"-cleanaft\", \"-O2\", \"-mtune=native\"])\n cmd_ [Stdin err] Shell \"pats-filter\"\n if c /= ExitSuccess\n then error \"patscc failure\"\n else pure ()\n\n \"install\" ~> do\n need [\"target/{{ project }}\"]\n home <- getEnv \"HOME\"\n cmd [\"cp\", \"target/{{ project }}\", fromMaybe \"\" home ++ \"/.local/bin\"]\n\n \"valgrind\" ~> do\n need [\"target/{{ project }}\"]\n cmd [\"valgrind\", \"./target/{{ project }}\"]\n\n \"run\" ~> do\n need [\"target/{{ project }}\"]\n cmd [\"./target/{{ project }}\"]\n\n \"clean\" ~> do\n cmd_ [\"sn\", \"c\"]\n removeFilesAfter \".\" [\"//*.c\", \"tags\", \"build\"]\n removeFilesAfter \".shake\" [\"//*\"]\n removeFilesAfter \"target\" [\"//*\"]\n"