45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Console\Commands\Node;
 | |
| 
 | |
| use App\Models\Node;
 | |
| use Illuminate\Console\Command;
 | |
| 
 | |
| class NodeConfigurationCommand extends Command
 | |
| {
 | |
|     protected $signature = 'p:node:configuration
 | |
|                             {node : The ID or UUID of the node to return the configuration for.}
 | |
|                             {--format=yaml : The output format. Options are "yaml" and "json".}';
 | |
| 
 | |
|     protected $description = 'Displays the configuration for the specified node.';
 | |
| 
 | |
|     public function handle(): int
 | |
|     {
 | |
|         $column = ctype_digit((string) $this->argument('node')) ? 'id' : 'uuid';
 | |
| 
 | |
|         /** @var \App\Models\Node $node */
 | |
|         $node = Node::query()->where($column, $this->argument('node'))->firstOr(function () {
 | |
|             $this->error('The selected node does not exist.');
 | |
| 
 | |
|             exit(1);
 | |
|         });
 | |
| 
 | |
|         $format = $this->option('format');
 | |
|         if (!in_array($format, ['yaml', 'yml', 'json'])) {
 | |
|             $this->error('Invalid format specified. Valid options are "yaml" and "json".');
 | |
| 
 | |
|             return 1;
 | |
|         }
 | |
| 
 | |
|         if ($format === 'json') {
 | |
|             $this->output->write($node->getJsonConfiguration(true));
 | |
|         } else {
 | |
|             $this->output->write($node->getYamlConfiguration());
 | |
|         }
 | |
| 
 | |
|         $this->output->newLine();
 | |
| 
 | |
|         return 0;
 | |
|     }
 | |
| }
 | 
