| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
							- <?php
 
- namespace Grav\Plugin\Console;
 
- use Exception;
 
- use Grav\Common\Utils;
 
- use Grav\Common\Yaml;
 
- use Grav\Console\ConsoleCommand;
 
- use Symfony\Component\Console\Input\InputOption;
 
- use function count;
 
- /**
 
-  * Class FlushQueueCommand
 
-  * @package Grav\Console\Cli\
 
-  */
 
- class FlexConvertDataCommand extends ConsoleCommand
 
- {
 
-     /** @var array */
 
-     protected $options = [];
 
-     /**
 
-      * @return void
 
-      */
 
-     protected function configure(): void
 
-     {
 
-         $this
 
-             ->setName('convert-data')
 
-             ->setAliases(['convertdata'])
 
-             ->addOption(
 
-                 'in',
 
-                 'i',
 
-                 InputOption::VALUE_REQUIRED,
 
-                 'path to file to convert from (valid types: [json|yaml])'
 
-             )
 
-             ->addOption(
 
-                 'out',
 
-                 'o',
 
-                 InputOption::VALUE_REQUIRED,
 
-                 'format of file to convert to [json|yaml]'
 
-             )
 
-             ->setDescription('Converts data from one format to another')
 
-             ->setHelp('The <info>clear-queue-failures</info> command clears any queue failures that have accumulated');
 
-     }
 
-     /**
 
-      * @return int
 
-      */
 
-     protected function serve(): int
 
-     {
 
-         $input = $this->getInput();
 
-         $io = $this->getIO();
 
-         $out_raw = null;
 
-         $in = $input->getOption('in');
 
-         $in_parts = Utils::pathinfo($in);
 
-         $in_extension = $in_parts['extension'];
 
-         $out_extension = $input->getOption('out');
 
-         $io->title('Flex Convert Data');
 
-         if (!file_exists($in)) {
 
-             $io->error('cannot find the file: ' . realpath($in));
 
-             return 1;
 
-         }
 
-         if (!$in_extension) {
 
-             $io->error($in . ' has no file extension defined');
 
-             return 1;
 
-         }
 
-         if (!$out_extension) {
 
-             $io->error($out_extension . ' is not a valid extension');
 
-             return 1;
 
-         }
 
-         $in_raw = file_get_contents($in);
 
-         // Get the input data
 
-         if ($in_extension === 'yaml' || $in_extension === 'yml') {
 
-             $in_data = Yaml::parse($in_raw);
 
-         } elseif ($in_extension === 'json' ) {
 
-             $in_data = json_decode($in_raw, true, 512, JSON_THROW_ON_ERROR);
 
-         } else {
 
-             $io->error('input files with extension ' . $in_extension . ', is not supported');
 
-             return 1;
 
-         }
 
-         // Simple progress bar
 
-         $progress = $io->createProgressBar(count($in_data));
 
-         $progress->setFormat('verbose');
 
-         $progress->start();
 
-         // add Unique Id if needed
 
-         $index = 0;
 
-         $out_data = [];
 
-         foreach ($in_data as $key => $entry) {
 
-             if ($key === $index++) {
 
-                 $out_data[$this->generateKey()] = $entry;
 
-             } else {
 
-                 $out_data[$key] = $entry;
 
-             }
 
-             $progress->advance();
 
-         }
 
-         // render progress
 
-         $progress->finish();
 
-         $io->newLine(2);
 
-         
 
-         // Convert to output format
 
-         if ($out_extension === 'yaml' || $out_extension === 'yml') {
 
-             $out_raw = Yaml::dump($out_data);
 
-         } elseif ($out_extension === 'json' ) {
 
-             $out_raw = json_encode($out_data, JSON_PRETTY_PRINT);
 
-         } else {
 
-             $io->error('input files with extension ' . $out_extension . ', is not supported');
 
-             return 1;
 
-         }
 
-         // Write the file:
 
-         $out_filename = $in_parts['dirname'] . '/' . $in_parts['filename'] . '.' . $out_extension;
 
-         file_put_contents($out_filename, $out_raw);
 
-         $io->success('successfully converted the file and saved as: ' . $out_filename);
 
-         return 0;
 
-     }
 
-     /**
 
-      * @return string|false
 
-      * @throws Exception
 
-      */
 
-     protected function generateKey()
 
-     {
 
-         return substr(hash('sha256', random_bytes(32)), 0, 32);
 
-     }
 
- }
 
 
  |