run tasks with automatic dependency resolution - written in Ruby