class DevelGenerateCommands

Same name in this branch
  1. 5.x devel_generate/src/Commands/DevelGenerateCommands.php \Drupal\devel_generate\Commands\DevelGenerateCommands
Same name and namespace in other branches
  1. 8.x-1.x devel_generate/src/Commands/DevelGenerateCommands.php \Drupal\devel_generate\Commands\DevelGenerateCommands
  2. 4.x devel_generate/src/Commands/DevelGenerateCommands.php \Drupal\devel_generate\Commands\DevelGenerateCommands

Provide Drush commands for all the core Devel Generate plugins.

For commands that are parts of modules, Drush expects to find commandfiles in __MODULE__/src/Drush/Commands, and the namespace is Drupal/__MODULE__/Drush/Commands.

Hierarchy

  • class \Drupal\devel_generate\Drush\Commands\DevelGenerateCommands uses \Drush\Commands\AutowireTrait implements \Drush\Commands\DrushCommands

Expanded class hierarchy of DevelGenerateCommands

1 file declares its use of DevelGenerateCommands
DevelGenerateCommandsTest.php in devel_generate/tests/src/Functional/DevelGenerateCommandsTest.php

File

devel_generate/src/Drush/Commands/DevelGenerateCommands.php, line 20

Namespace

Drupal\devel_generate\Drush\Commands
View source
final class DevelGenerateCommands extends DrushCommands {
  use AutowireTrait;
  const USERS = 'devel-generate:users';
  const TERMS = 'devel-generate:terms';
  const VOCABS = 'devel-generate:vocabs';
  const MENUS = 'devel-generate:menus';
  const CONTENT = 'devel-generate:content';
  const BLOCK_CONTENT = 'devel-generate:block-content';
  const MEDIA = 'devel-generate:media';
  
  /**
   * The plugin instance.
   */
  private DevelGenerateBaseInterface $pluginInstance;
  
  /**
   * The Generate plugin parameters.
   */
  private array $parameters;
  
  /**
   * DevelGenerateCommands constructor.
   *
   * @param \Drupal\devel_generate\DevelGeneratePluginManager $manager
   *   The DevelGenerate plugin manager.
   */
  public function __construct(protected DevelGeneratePluginManager $manager) {
    parent::__construct();
    $this->setManager($manager);
  }
  
  /**
   * Get the DevelGenerate plugin manager.
   *
   * @return \Drupal\devel_generate\DevelGeneratePluginManager
   *   The DevelGenerate plugin manager.
   */
  public function getManager() : DevelGeneratePluginManager {
    return $this->manager;
  }
  
  /**
   * Set the DevelGenerate plugin manager.
   *
   * @param \Drupal\devel_generate\DevelGeneratePluginManager $manager
   *   The DevelGenerate plugin manager.
   */
  public function setManager(DevelGeneratePluginManager $manager) : void {
    $this->manager = $manager;
  }
  
  /**
   * Get the DevelGenerate plugin instance.
   *
   * @return \Drupal\devel_generate\DevelGenerateBaseInterface
   *   The DevelGenerate plugin instance.
   */
  public function getPluginInstance() : DevelGenerateBaseInterface {
    return $this->pluginInstance;
  }
  
  /**
   * Set the DevelGenerate plugin instance.
   *
   * @param mixed $pluginInstance
   *   The DevelGenerate plugin instance.
   */
  public function setPluginInstance(mixed $pluginInstance) : void {
    $this->pluginInstance = $pluginInstance;
  }
  
  /**
   * Get the DevelGenerate plugin parameters.
   *
   * @return array
   *   The plugin parameters.
   */
  public function getParameters() : array {
    return $this->parameters;
  }
  
  /**
   * Set the DevelGenerate plugin parameters.
   *
   * @param array $parameters
   *   The plugin parameters.
   */
  public function setParameters(array $parameters) : void {
    $this->parameters = $parameters;
  }
  
  /**
   * Create users.
   */
  public function users(string|int $num = 50, array $options = [
    'kill' => FALSE,
    'roles' => self::REQ,
  ]) : void {
    // @todo pass $options to the plugins.
    $this->generate();
  }
  
  /**
   * Create terms in specified vocabulary.
   */
  public function terms(string|int $num = 50, array $options = [
    'kill' => FALSE,
    'bundles' => self::REQ,
    'feedback' => '1000',
    'languages' => self::REQ,
    'translations' => self::REQ,
    'min-depth' => '1',
    'max-depth' => '4',
  ]) : void {
    $this->generate();
  }
  
  /**
   * Create vocabularies.
   */
  public function vocabs(string|int $num = 1, array $options = [
    'kill' => FALSE,
  ]) : void {
    $this->generate();
  }
  
  /**
   * Create menus.
   */
  public function menus(?string $number_menus = '2', ?string $number_links = '50', ?string $max_depth = '3', string $max_width = '8', array $options = [
    'kill' => FALSE,
  ]) : void {
    $this->generate();
  }
  
  /**
   * Create content.
   */
  public function content(string $num = '50', ?string $max_comments = '0', array $options = [
    'kill' => FALSE,
    'bundles' => 'page,article',
    'authors' => self::REQ,
    'roles' => self::REQ,
    'feedback' => 1000,
    'skip-fields' => self::REQ,
    'base-fields' => self::REQ,
    'languages' => self::REQ,
    'translations' => self::REQ,
    'add-type-label' => FALSE,
  ]) : void {
    $this->generate();
  }
  
  /**
   * Create Block content blocks.
   */
  public function blockContent(?string $num = '50', array $options = [
    'kill' => FALSE,
    'block_types' => 'basic',
    'feedback' => 1000,
    'skip-fields' => self::REQ,
    'base-fields' => self::REQ,
    'languages' => self::REQ,
    'translations' => self::REQ,
    'add-type-label' => FALSE,
    'reusable' => TRUE,
  ]) : void {
    $this->generate();
  }
  
  /**
   * Create media items.
   */
  public function media(?string $num = '50', array $options = [
    'kill' => FALSE,
    'media-types' => self::REQ,
    'feedback' => 1000,
    'skip-fields' => self::REQ,
    'languages' => self::REQ,
    'base-fields' => self::REQ,
  ]) : void {
    $this->generate();
  }
  
  /**
   * The standard drush validate hook.
   *
   * @param \Consolidation\AnnotatedCommand\CommandData $commandData
   *   The data sent from the drush command.
   */
  public function validate(CommandData $commandData) : void {
    $manager = $this->manager;
    $args = $commandData->input()
      ->getArguments();
    // The command name is the first argument but we do not need this.
    array_shift($args);
    /** @var \Drupal\devel_generate\DevelGenerateBaseInterface $instance */
    $instance = $manager->createInstance($commandData->annotationData()
      ->get('pluginId'), []);
    $this->setPluginInstance($instance);
    $parameters = $instance->validateDrushParams($args, $commandData->input()
      ->getOptions());
    $this->setParameters($parameters);
  }
  
  /**
   * Wrapper for calling the plugin instance generate function.
   */
  public function generate() : void {
    $instance = $this->pluginInstance;
    $instance->generate($this->parameters);
  }

}

Members

Title Sort descending Modifiers Object type Summary
DevelGenerateCommands::$parameters private property The Generate plugin parameters.
DevelGenerateCommands::$pluginInstance private property The plugin instance.
DevelGenerateCommands::blockContent public function Create Block content blocks.
DevelGenerateCommands::BLOCK_CONTENT constant
DevelGenerateCommands::CONTENT constant
DevelGenerateCommands::content public function Create content.
DevelGenerateCommands::generate public function Wrapper for calling the plugin instance generate function.
DevelGenerateCommands::getManager public function Get the DevelGenerate plugin manager.
DevelGenerateCommands::getParameters public function Get the DevelGenerate plugin parameters.
DevelGenerateCommands::getPluginInstance public function Get the DevelGenerate plugin instance.
DevelGenerateCommands::MEDIA constant
DevelGenerateCommands::media public function Create media items.
DevelGenerateCommands::menus public function Create menus.
DevelGenerateCommands::MENUS constant
DevelGenerateCommands::setManager public function Set the DevelGenerate plugin manager.
DevelGenerateCommands::setParameters public function Set the DevelGenerate plugin parameters.
DevelGenerateCommands::setPluginInstance public function Set the DevelGenerate plugin instance.
DevelGenerateCommands::terms public function Create terms in specified vocabulary.
DevelGenerateCommands::TERMS constant
DevelGenerateCommands::USERS constant
DevelGenerateCommands::users public function Create users.
DevelGenerateCommands::validate public function The standard drush validate hook.
DevelGenerateCommands::VOCABS constant
DevelGenerateCommands::vocabs public function Create vocabularies.
DevelGenerateCommands::__construct public function DevelGenerateCommands constructor.