Skip to content
Snippets Groups Projects

issue 3422745: add drush export and import

2 files
+ 91
0
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 85
0
<?php
namespace Drupal\module_usage\Drush\Commands;
use Drupal\Component\Serialization\Json;
use Drupal\Core\File\FileSystemInterface;
use Drupal\module_usage\Services\ModuleUsageService;
use Drupal\module_usage\Services\QueryService;
use Drush\Commands\DrushCommands;
/**
* Provide drush commands.
*
* @class ModuleUsageCommands
*/
class ModuleUsageCommands extends DrushCommands {
/**
* The module usage service.
*
* @var ModuleUsageService
*/
private ModuleUsageService $moduleUsageService;
/**
* @var QueryService
*/
private QueryService $queryService;
/**
* The constructor.
*
* @param ModuleUsageService $moduleUsageService
* The module usage service.
*/
public function __construct(ModuleUsageService $moduleUsageService, QueryService $queryService) {
parent::__construct();
$this->moduleUsageService = $moduleUsageService;
$this->queryService = $queryService;
}
/**
* @command moduse:export
* @aliases moduse-export
* @option path
*
* @param array $options
*
* @return void
*/
public function export(
array $options = [
'path' => 'private://moduse',
]
): void {
$data = $this->moduleUsageService->exportModuleUsageData();
$directory = $options['path'];
if (\Drupal::service('file_system')->prepareDirectory($directory, FileSystemInterface::CREATE_DIRECTORY | FileSystemInterface::MODIFY_PERMISSIONS)) {
file_put_contents($directory . '/moduse.json', $data);
}
}
/**
* @command moduse:import
* @aliases moduse-import
* @option path
*
* @param array $options
*
* @return void
* @throws \Exception
*/
public function import(
array $options = [
'path' => 'private://moduse',
]
): void {
$directory = $options['path'];
if ($data = file_get_contents($directory . '/moduse.json')) {
$data = Json::decode($data);
if ($data) {
$this->queryService->doImport($data);
}
}
}
}
\ No newline at end of file
Loading