1. <?php
  2. /**
  3. * Sorts command-line options for scheduled runs.
  4. *
  5. * @param array $options An associative array of options.
  6. * @return array A sorted array of options.
  7. */
  8. function sortScheduledRunOptions(array $options): array
  9. {
  10. // Define the order of options. Prioritize essential ones.
  11. $sortOrder = [
  12. '--cron' => 0, // Cron schedule
  13. '--start-date' => 1, // Starting date
  14. '--end-date' => 2, // Ending date
  15. '--task' => 3, // Task to run
  16. '--output-file' => 4, // Output file
  17. '--log-file' => 5, // Log file
  18. '--priority' => 6, //Priority
  19. '--tags' => 7, //Tags
  20. '--dry-run' => 8, // Dry run mode
  21. '--verbose' => 9, // Verbose output
  22. '--help' => 10, // Help message
  23. ];
  24. // Sort the options array based on the defined order.
  25. usort($options, function ($a, $b) use ($sortOrder) {
  26. return $sortOrder[$a] - $sortOrder[$b];
  27. });
  28. return $options;
  29. }
  30. // Example usage (for testing):
  31. /*
  32. $options = [
  33. '--dry-run' => true,
  34. '--task' => 'backup',
  35. '--start-date' => '2024-01-01',
  36. '--cron' => '0 0 * * *',
  37. '--help' => true,
  38. '--output-file' => '/tmp/backup.tar.gz',
  39. '--log-file' => '/var/log/backup.log',
  40. '--priority' => 'high',
  41. '--tags' => ['backup', 'important'],
  42. ];
  43. $sortedOptions = sortScheduledRunOptions($options);
  44. print_r($sortedOptions);
  45. */
  46. ?>

Add your comment