'use strict';

var SilentError = require('silent-error');
var Blueprint   = require('../models/blueprint');

/*
 * Helper for commands that use a blueprint to merge the blueprint's options
 * into the command's options so they can be passed in. Needs to be invoked
 * with `this` pointing to the command object, e.g.
 *
 * var mergeBlueprintOptions = require('../utilities/merge-blueprint-options');
 *
 * Command.extend({
 *   beforeRun: mergeBlueprintOptions
 * })
 */
module.exports = function(rawArgs) {
  if (rawArgs.length === 0) {
    return;
  }
  // merge in blueprint availableOptions
  var blueprint;
  try {
    blueprint = Blueprint.lookup(rawArgs[0], {
      paths: this.project.blueprintLookupPaths()
    });
    this.registerOptions(blueprint);
  } catch (e) {
    SilentError.debugOrThrow('ember-cli/commands/' + this.name, e);
  }
};
