Skip to content
No description or website provided.
Find file
New pull request
Latest commit c350c12 @nfjinjing fix for ghc 7.10
Failed to load latest commit information.
src fix for ghc 7.10
.gitignore 6.14.2 release
LICENSE fix licence
Setup.lhs init

Nemesis: a task management tool for Haskell


import System.Nemesis.Env

main = run $ do

    [ "**/*.hi"
    , "**/*.o"
    , "manifest"

  task "dist" $ do
    sh "cabal clean"
    sh "cabal configure"
    sh "cabal sdist"

  task "i" (sh "ghci -isrc src/System/Nemesis.hs")

  task "manifest" $ do
    sh "find . | grep 'hs$' > manifest"



cabal update
cabal install nemesis


Create a file named Nemesis

import System.Nemesis.Env
import Air.Env ((-))
import Prelude hiding ((-))

main = run - do

  -- desc is optional, it gives some description to the task
  -- task syntax: task "keyword: space seperated dependencies" io-action
  desc "Hunter attack macro"
  task "attack: pet-attack auto-attack" (putStrLn "attack macro done!")

  desc "Pet attack"
  task "pet-attack: mark" - do
    sh "echo 'pet attack'"

  desc "Hunter's mark"
  task "mark" - do
    sh "echo \"casting hunter's mark\""

  desc "Auto attack"
  task "auto-attack" - do
    sh "echo 'auto shoot'"


runghc Nemesis

attack          Hunter attack macro
auto-attack     Auto attack
mark            Hunter's mark
pet-attack      Pet attack

runghc Nemesis attack

casting hunter's mark
pet attack
auto shoot
attack macro done!


Create namespaces for tasks with the keyword namespace

import System.Nemesis.Env
import Air.Env ((-))
import Prelude hiding ((-))

main = run - do

  namespace "eat" - do

    task "bread: salad" - putStrLn "eating bread"
    task "salad: /drink/coke" - putStrLn "eating salad"

  namespace "drink" - do

    task "coke" - putStrLn "drinking coke"

Namespaces are referenced as path components.

runghc Nemesis bread

Nemesis: bread does not exist!

runghc Nemesis eat/bread

drinking coke
eating salad
eating bread


  • alias runghc Nemesis to something sweeter, e.g. n
Something went wrong with that request. Please try again.