title: Multiple commands with different options using yargs/optimist
body: <p>I'm trying to write a CLI for a node module using <a href="https://www.npmjs.com/package/yargs" rel="nofollow">yargs</a> but I'm having difficulty setting two different commands that could be used, one requiring only one parameter, but the other requiring two. Here is what I have so far</p>
  
  <pre><code>var argv = require('yargs')
     .option('r', {
         alias : 'reset',
         describe: 'clear data for site(s)',
         type: 'string'
     }).
     option('d', {
         alias : 'dashboard',
         describe: 'copy dashboard for the specified site across all others',
         type: 'array'
     })
     .usage('Usage: $0 -r [string] -d [array]')
     .argv;
  </code></pre>
  
  <p>To reset data I would do</p>
  
  <pre><code>node main.js -r mysite
  </code></pre>
  
  <p>But to copy a dashboard I want to be to do</p>
  
  <pre><code>node main.js -d theSiteToCopyFrom theSiteToCopyTo
  </code></pre>
  
  <p>or even</p>
  
  <pre><code>node main.js -d theSiteToCopyFrom [theArrayOfSitesToCopyTo, , ,] 
  </code></pre>
  
  <p>I have looked through the examples given, such as</p>
  
  <pre><code>var argv = require('yargs')
      .option('f', {
          alias : 'file',
          demand: true,
          default: '/etc/passwd',
          describe: 'x marks the spot',
          type: 'string'
      })
      .argv
  ;
  </code></pre>
  
  <p>but I can't see how to specify that multiple parameters are required for different commands.</p>