5 * Generate content, taxonomy, menu, and users via drush framework.
7 use Drupal\devel_generate\DevelGenerateBaseInterface;
8 use Drupal\devel_generate\DevelGeneratePluginManager;
11 * Implementation of hook_drush_command().
13 function devel_generate_drush_command() {
14 $items['generate-users'] = array(
15 'callback' => 'drush_devel_generate',
16 'callback arguments' => array(
17 'plugin_id' => 'user',
19 'description' => 'Create users.',
21 'num' => 'Number of users to generate.',
24 'kill' => 'Delete all users before generating new ones.',
25 'roles' => 'A comma delimited list of role IDs which should be granted to the new users. No need to specify authenticated user role.',
26 'pass' => 'Specify a password to be set for all generated users.',
28 'aliases' => array('genu'),
30 $items['generate-terms'] = array(
31 'callback' => 'drush_devel_generate',
32 'callback arguments' => array(
33 'plugin_id' => 'term',
35 'description' => 'Create terms in specified vocabulary.',
37 'machine_name' => 'Vocabulary machine name into which new terms will be inserted.',
38 'num' => 'Number of terms to insert. Defaults to 10.',
41 'kill' => 'Delete all terms in specified vocabulary before generating.',
42 'feedback' => 'An integer representing interval for insertion rate logging. Defaults to 1000',
43 'pipe' => 'Returns the list of generated terms, one per line.',
45 'aliases' => array('gent'),
48 $items['generate-vocabs'] = array(
49 'callback' => 'drush_devel_generate',
50 'callback arguments' => array(
51 'plugin_id' => 'vocabulary',
53 'description' => 'Create vocabularies.',
55 'num' => 'Number of vocabularies to create. Defaults to 1.',
58 'kill' => 'Delete all vocabularies before generating.',
59 'pipe' => 'Returns the list of generated vocabularies, one per line.',
61 'aliases' => array('genv'),
63 $items['generate-content'] = array(
64 'callback' => 'drush_devel_generate',
65 'callback arguments' => array(
66 'plugin_id' => 'content',
68 'description' => 'Create content.',
69 'drupal dependencies' => array('devel_generate'),
71 'num' => 'Number of nodes to generate.',
72 'max_comments' => 'Maximum number of comments to generate.',
75 'kill' => 'Delete all content before generating new content.',
76 'types' => 'A comma delimited list of content types to create. Defaults to page,article.',
77 'feedback' => 'An integer representing interval for insertion rate logging. Defaults to 1000',
78 'skip-fields' => 'A comma delimited list of fields to omit when generating random values',
79 'languages' => 'A comma-separated list of language codes',
81 'aliases' => array('genc'),
83 $items['generate-menus'] = array(
84 'callback' => 'drush_devel_generate',
85 'callback arguments' => array(
86 'plugin_id' => 'menu',
88 'description' => 'Create menus and menu items.',
89 'drupal dependencies' => array('devel_generate'), // Remove these once devel.module is moved down a directory. http://drupal.org/node/925246
91 'number_menus' => 'Number of menus to generate. Defaults to 2.',
92 'number_links' => 'Number of links to generate. Defaults to 50.',
93 'max_depth' => 'Max link depth. Defaults to 3',
94 'max_width' => 'Max width of first level of links. Defaults to 8.',
97 'kill' => 'Delete all previously generated menus and links before generating new menus and links.',
98 'pipe' => 'Returns the list of generated menus, one per line.',
100 'aliases' => array('genm'),
106 * Implements drush_hook_COMMAND_validate().
108 function drush_devel_generate_generate_users_validate() {
110 //Array of "Callback arguments" and "command line args".
111 $params = func_get_args();
112 _drush_plugin_validate($params);
116 * Implements drush_hook_COMMAND_validate().
118 function drush_devel_generate_generate_terms_validate() {
120 //Array of "Callback arguments" and "command line args".
121 $params = func_get_args();
122 _drush_plugin_validate($params);
126 * Implements drush_hook_COMMAND_validate().
128 function drush_devel_generate_generate_vocabs_validate() {
130 //Array of "Callback arguments" and "command line args".
131 $params = func_get_args();
132 _drush_plugin_validate($params);
136 * Implements drush_hook_COMMAND_validate().
138 function drush_devel_generate_generate_content_validate() {
140 //Array of "Callback arguments" and "command line args".
141 $params = func_get_args();
142 _drush_plugin_validate($params);
146 * Implements drush_hook_COMMAND_validate().
148 function drush_devel_generate_generate_menus_validate() {
150 //Array of "Callback arguments" and "command line args".
151 $params = func_get_args();
152 _drush_plugin_validate($params);
156 * Helper function which returns an array with a plugin instance
157 * for a given id and the validated values ready to be used by
158 * the generate() function of the plugin.
160 function _drush_plugin_validate($params) {
162 $instance_and_values = &drupal_static('drush_devel_generate_generate_validate');
163 //Getting plugin_id and leaving the command line args
164 $plugin_id = array_shift($params);
166 if (!isset($instance_and_values[$plugin_id])) {
168 /** @var DevelGeneratePluginManager $manager */
169 $manager = \Drupal::service('plugin.manager.develgenerate');
171 /** @var DevelGenerateBaseInterface $instance */
172 $instance = $manager->createInstance($plugin_id, array());
174 //Plugin instance suit params in order to fit for generateElements
175 $values = $instance->validateDrushParams($params);
176 $instance_and_values[$plugin_id]['instance'] = $instance;
177 $instance_and_values[$plugin_id]['values'] = $values;
180 return $instance_and_values[$plugin_id];
184 * Command callback. Generate a number of elements.
186 function drush_devel_generate() {
187 $params = func_get_args();
188 $plugin_id = array_shift($params);
189 $instance_and_values = drupal_static('drush_devel_generate_generate_validate');
191 /** @var DevelGenerateBaseInterface $instance */
192 $instance = $instance_and_values[$plugin_id]['instance'];
193 $values = $instance_and_values[$plugin_id]['values'];
194 $instance->generate($values);