cli.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. $_SERVER['DOCUMENT_ROOT'] = dirname(__DIR__);
  3. require $_SERVER['DOCUMENT_ROOT'] . '/app/libs/uoj-lib.php';
  4. // TODO: more beautiful argv parser
  5. $handlers = [
  6. 'upgrade:up' => function ($name) {
  7. if (func_num_args() != 1) {
  8. die("php cli.php upgrade:up <name>\n");
  9. }
  10. Upgrader::transaction(function() use ($name) {
  11. Upgrader::up($name);
  12. });
  13. die("finished!\n");
  14. },
  15. 'upgrade:down' => function ($name) {
  16. if (func_num_args() != 1) {
  17. die("php cli.php upgrade:down <name>\n");
  18. }
  19. Upgrader::transaction(function() use ($name) {
  20. Upgrader::down($name);
  21. });
  22. die("finished!\n");
  23. },
  24. 'upgrade:refresh' => function ($name) {
  25. if (func_num_args() != 1) {
  26. die("php cli.php upgrade:refresh <name>\n");
  27. }
  28. Upgrader::transaction(function() use ($name) {
  29. Upgrader::refresh($name);
  30. });
  31. die("finished!\n");
  32. },
  33. 'upgrade:remove' => function ($name) {
  34. if (func_num_args() != 1) {
  35. die("php cli.php upgrade:remove <name>\n");
  36. }
  37. Upgrader::transaction(function() use ($name) {
  38. Upgrader::remove($name);
  39. });
  40. die("finished!\n");
  41. },
  42. 'upgrade:latest' => function () {
  43. if (func_num_args() != 0) {
  44. die("php cli.php upgrade:latest\n");
  45. }
  46. Upgrader::transaction(function() {
  47. Upgrader::upgradeToLatest();
  48. });
  49. die("finished!\n");
  50. },
  51. 'upgrade:remove-all' => function () {
  52. if (func_num_args() != 0) {
  53. die("php cli.php upgrade:remove-all\n");
  54. }
  55. Upgrader::transaction(function() {
  56. Upgrader::removeAll();
  57. });
  58. die("finished!\n");
  59. },
  60. 'help' => 'showHelp'
  61. ];
  62. function showHelp() {
  63. global $handlers;
  64. echo "UOJ Command-Line Interface\n";
  65. echo "php cli.php <task-name> params1 params2 ...\n";
  66. echo "\n";
  67. echo "The following tasks are available:\n";
  68. foreach ($handlers as $cmd => $handler) {
  69. echo "\t$cmd\n";
  70. }
  71. }
  72. if (count($argv) <= 1) {
  73. showHelp();
  74. die();
  75. }
  76. if (!isset($handlers[$argv[1]])) {
  77. echo "Invalid parameters.\n";
  78. showHelp();
  79. die();
  80. }
  81. call_user_func_array($handlers[$argv[1]], array_slice($argv, 2));