docs: function () {
    var str = 'Usage: ' + path.basename(process.argv[1]) + ' ' + process.argv[2];
    if (descriptors.opts.length) str += ' [options]';
    if (descriptors.args.length) {
      for (var i=0; i<descriptors.args.length; i++) {
        if (descriptors.args[i].required) {
          str += ' ' + descriptors.args[i].name;
        } else {
          str += ' [' + descriptors.args[i].name + ']';
        }
      }
    }
    str += '\n';
    for (var i=0; i<descriptors.opts.length; i++) {
      var opt = descriptors.opts[i];
      if (opt.description) str += (opt.description) + '\n';
      var line = '';
      if (opt.short && !opt.long) line += '-' + opt.short;
      else if (opt.long && !opt.short) line += '--' + opt.long;
      else line += '-' + opt.short + ', --' + opt.long;
      if (opt.value) line += ' <value>';
      if (opt.required) line += ' (required)';
      str += '    ' + line + '\n';
    }
    return str;
  }