 watchDir = (source, base) ->
   readdirTimeout = null
   try
+    watchedDirs[source] = yes
     watcher = fs.watch source, ->
       clearTimeout readdirTimeout
       readdirTimeout = wait 25, ->

            return unwatchDir source, base
          for file in files when not hidden(file) and not notSources[file]
            file = path.join source, file
            continue if sources.some (s) -> s.indexOf(file) >= 0
            sources.push file
            sourceCode.push null
            compilePath file, no, base

  literals = if opts.run then sources.splice 1 else []
  process.argv = process.argv[0..1].concat literals
  process.argv[0] = 'coffee'

  opts.output = path.resolve opts.output  if opts.output
  opts.join   = path.resolve opts.join    if opts.join
  for source in sources
    source = path.resolve source
    compilePath source, yes, source

# Compile a path, which could be a script or a directory. If a directory
# is passed, recursively compile all '.coffee', '.litcoffee', and '.coffee.md'
