whole_func_string: function sortArgs(app, argv, options) {
    options = options || [];
  
    var first = options.first || [];
    var last = options.last || [];
    var cliKeys = [];
  
    if (app.cli && app.cli.keys) {
      cliKeys = app.cli.keys;
    }
  
    var keys = utils.union(first, cliKeys, Object.keys(argv));
    keys = utils.diff(keys, last);
    keys = utils.union(keys, last);
  
    var len = keys.length;
    var idx = -1;
    var res = {};
  
    while (++idx < len) {
      var key = keys[idx];
      if (argv.hasOwnProperty(key)) {
        res[key] = argv[key];
      }
    }
    return res;
  }
func_code_string: function sortArgs(app, argv, options) {
    options = options || [];
  
    var first = options.first || [];
    var last = options.last || [];
    var cliKeys = [];
  
    if (app.cli && app.cli.keys) {
      cliKeys = app.cli.keys;
    }
  
    var keys = utils.union(first, cliKeys, Object.keys(argv));
    keys = utils.diff(keys, last);
    keys = utils.union(keys, last);
  
    var len = keys.length;
    var idx = -1;
    var res = {};
  
    while (++idx < len) {
      var key = keys[idx];
      if (argv.hasOwnProperty(key)) {
        res[key] = argv[key];
      }
    }
    return res;
  }
func_documentation_string: Sort arguments so that `app.cli.process` executes commands
  in the order specified.
  
  @param {Object} `app` Application instance
  @param {Object} `argv` The expanded argv object
  @param {Object} `options`
  @param {Array} `options.first` The keys to run first.
  @param {Array} `options.last` The keys to run last.
  @return {Object} Returns the `argv` object with sorted keys.