aboutsummaryrefslogtreecommitdiff
path: root/bin/mode.php
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mode.php')
-rwxr-xr-xbin/mode.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/bin/mode.php b/bin/mode.php
new file mode 100755
index 0000000..552ce4e
--- /dev/null
+++ b/bin/mode.php
@@ -0,0 +1,65 @@
1#!/usr/bin/env php
2<?php
3// bin/mode.php
4
5declare(strict_types=1);
6
7use App\Entity\AppMetadata;
8use Doctrine\ORM\EntityManager;
9
10
11chdir(dirname(__FILE__)); // pour être au même niveau que l'appli dans /public
12require "../vendor/autoload.php";
13Config::load('../config/config.ini'); // pour TABLE_PREFIX
14require '../src/model/doctrine-bootstrap.php';
15
16const ALLOWED_MODES = ['run', 'maintenance'];
17
18// aide
19$aide = "Usage : php bin/mode.php <mode>\nModes disponibles : " . implode(', ', ALLOWED_MODES) . "\n";
20// version avec deux paramètres proposée par claude
21/*$aide = "Usage : php bin/mode.php <mode> [--by <auteur>]
22 Modes disponibles : " . implode(', ', ALLOWED_MODES) . "
23 Exemple : php bin/mode.php maintenance --by alice\n";*/
24if($argc < 2 || in_array($argv[1], ['--help', '-h'])){
25 echo $aide;
26 exit(0);
27}
28
29// validation du mode
30if(!in_array($argv[1], ALLOWED_MODES)){
31 echo "Erreur : mode '$argv[1]' invalide.\n";
32 echo "Modes disponibles : " . implode(', ', ALLOWED_MODES) . "\n";
33 exit(1);
34}
35
36// paramètre --by
37/*$by = 'cli';
38for ($i = 2; $i < $argc; $i++) {
39 if ($argv[$i] === '--by' && isset($argv[$i + 1])) {
40 $by = $argv[$i + 1];
41 break;
42 }
43}*/
44
45// changement BDD
46try{
47 AppMode::load($entityManager);
48 $current = AppMode::get();
49
50 if($current === $argv[1]){
51 echo "Le mode est déjà '$argv[1]', aucun changement.\n";
52 exit(0);
53 }
54
55 AppMode::set($entityManager, $argv[1]);
56 echo "Mode changé : '$current' => '$argv[1]'\n";
57
58 // le mode deux paramètres permettra d'indiquer son nom et automatiquement de d'enregistrer la date du changement
59 //AppMode::set($entityManager, $argv[1], 'system');
60 //echo "Mode changé : '$current' => '$argv[1]' (par $by)\n";
61}
62catch(LogicException $e){
63 echo "Erreur : " . $e->getMessage() . "\n";
64 exit(1);
65} \ No newline at end of file