Commandes Grav

Grav est livré avec une interface de ligne de commande (CLI) intégrée qui peut être trouvée sur bin/grav. La CLI est extrêmement utile pour exécuter des tâches récurrentes telles que vider le cache, effectuer des sauvegardes, etc.

L'accès à la CLI est un processus simple mais vous devez utiliser un terminal. Sur un Mac, cela s'appelle Terminal, sur Windows, cela s'appelle cmd et sur Linux, c'est juste un shell. Les commandes de style UNIX ne sont pas disponibles en mode natif dans Windows cmd. L'installation du package msysgit sur une machine Windows ajoute Git et Git BASH, qui est une invite de commande alternative qui rend les commandes UNIX disponibles. Si vous accédez à votre serveur à distance, vous utiliserez très probablement SSH pour vous connecter à distance à votre serveur. Consultez cet excellent tutoriel pour plus d'informations sur SSH.

Bien que certaines opérations puissent être effectuées manuellement, en s'appuyant sur la CLI, ces tâches pourraient être automatisées via des cronjobs qui s'exécutent quotidiennement.

Pour obtenir une liste de toutes les commandes disponibles dans Grav, vous pouvez lancer la commande :

 $ | bin/grav list

Cela devrait afficher quelque chose comme :

Available commands:
  backup       Creates a backup of the Grav instance
  cache        [clearcache|cache-clear] Clears Grav cache
  clean        Handles cleaning chores for Grav distribution
  composer     Updates the composer vendor dependencies needed by Grav.
  help         Displays help for a command
  install      Installs the dependencies needed by Grav. Optionally can create symbolic links
  list         Lists commands
  logviewer    Display the last few entries of Grav log
  new-project  [newproject] Creates a new Grav project with all the dependencies installed
  sandbox      Setup of a base Grav system in your webroot, good for development, playing  
    around or starting fresh
  scheduler    Run the Grav Scheduler.  Best when integrated with system cron
  security     Capable of running various Security checks

Pour obtenir de l'aide sur une commande spécifique, vous pouvez ajouter help avant la commande :

 $ | bin/grav help install

Sauvegarde.

Le système de sauvegarde Grav a été complètement remanié dans Grav 1.6 pour prendre en charge plusieurs profils de sauvegarde. Ces profils sont configurés dans le fichier user/config/backups.yaml. Si vous n'avez pas de fichier de configuration personnalisé, Grav utilisera celui par défaut fourni dans system/config/backups.yaml.

Si Grav détecte plusieurs profils de sauvegarde, la commande CLI vous demandera de choisir celui que vous souhaitez sauvegarder avec la commande CLI.

$ | cd ~/workspace/portfolio
  | bin/grav backup
  |  
  | Grav Backup
  | ===========
  |  
  | Choose a backup?
  |   [0] Default Site Backup
  |   [1] Pages Backup

Alternativement, vous pouvez passer directement un index du profil :

$ | cd ~/workspace/portfolio
  | bin/grav backup 1
  |  
  | Archiving 36 files [=======================================] 100% < 1 sec Done...
  |   
  | [OK] Backup Successfully Created: /users/joe/workspace/portfolio/backup/  
  |   pages_backup--20190227120510.zip

Vous trouverez plus d'informations sur la fonctionnalité de sauvegarde dans la section Avancé -> Sauvegardes.

Nettoyer.

Cette commande CLI est principalement utilisée pendant le processus de construction du package, car elle supprime les fichiers et dossiers superflus de Grav. Il est fortement recommandé de ne pas l'utiliser vous-même, sauf si vous l'utilisez pour créer vos propres packages Grav.

 $ | bin/grav clean

Vider le cache.

Vous pouvez vider le cache en supprimant tous les fichiers et dossiers sous cache/.

La commande CLI équivalente est :

 $ | cd ~/webroot/my-grav-project
 $ | bin/grav cache

Il existe plusieurs alias pour la compatibilité (cache, cache-clear, clearcache, clear).

L'option par défaut est le processus standard d'effacement du cache, mais vous pouvez le contrôler davantage avec ces options :

 --purge           If set purge old caches
 --all             If set will remove all including compiled, twig, doctrine caches
 --assets-only     If set will remove only assets/*
 --images-only     If set will remove only images/*
 --cache-only      If set will remove only cache/*
 --tmp-only        If set will remove only tmp/*

Composer.

Si vous avez installé Grav via GitHub et que vous avez installé manuellement des packages de fournisseurs basés sur composer, vous pouvez facilement mettre à jour avec :

 $ | bin/grav composer

Vous pouvez également passer des options de composition telles que install :

 $ | bin/grav composer --install

ou alors

 $ | bin/grav composer --update
Ceux-ci utilisent tous l'option --no-dev composer, donc pour pouvoir effectuer des tests, vous devez utiliser composer directement : bin/composer.phar.

Installer.

Pour installer les dépendances sur lesquelles Grav s'appuie (plugin error, plugin problems, thème antimatter), lancez un terminal ou une console et accédez au dossier grav où vous souhaitez installer les dépendances et exécutez la commande CLI.

 $ | cd ~/webroot/my-grav-project
 $ | bin/grav install

Vous devriez maintenant avoir les dépendances installées sous :

  • ~/webroot/my-grav-project/user/plugins/error
  • ~/webroot/my-grav-project/user/plugins/problems
  • ~/webroot/my-grav-project/user/themes/antimatter

Visionneuse de journal.

Dans le cadre de Grav 1.6, une nouvelle commande CLI logviewer a été créée pour permettre une visualisation rapide des journaux Grav.

La façon la plus simple d'utiliser cette commande est de taper simplement :

$ | cd ~/webroot/my-grav-project
$ | bin/grav logviewer

Cela affichera les 20 dernières entrées de journal du fichier logs/grav.log. Il y a quelques options :

1 | -f, --file[=FILE]     custom log file location (default = grav.log)
2 | -l, --lines[=LINES]   number of lines (default = 10)
3 | -v, --verbose         verbose output including a stack trace if available

par exemple.

$ | bin/grav logviewer --lines=4
  | 
  | Log Viewer
  | ==========
  |
  | viewing last 4 entries in grav.log
  |
  | 2019-02-27 12:00:30 [WARNING] Plugin 'foo-plugin' enabled but not found! Try clearing cache with `bin/grav cache`
  | 2019-02-27 12:04:57 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/default_site_backup--20190227120450.zip
  | 2019-02-27 12:05:10 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227120510.zip
  | 2019-02-27 12:26:00 [NOTICE] Backup Created: /Users/joe/my-grav-project/backup/pages_backup--20190227122600.zip

Et une sortie détaillée avec des traces de pile :

$ | bin/grav logviewer -v
  |
  | Log Viewer
  | ==========
  |
  | viewing last 20 entries in grav.log
  |
  | 2019-03-14 05:52:44 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
  | 2019-03-14 05:52:44 [CRITICAL] A function must be an instance of \Twig_FunctionInterface or \Twig_SimpleFunction.
  | 0 /Users/joe/my-grav-project/plugins/acme-twig-filters/acme-twig-filters.php(52): Twig\Environment->addFunction(Object(Twig\TwigFilter))
  | 1 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(212): Grav\Plugin\ACMETwigFiltersPlugin->onTwigInitialized(Object(RocketTheme\Toolbox\Event\Event), 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\EventDispatcher))
  | 2 /Users/joe/my-grav-project/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
  | 3 /Users/joe/my-grav-project/vendor/rockettheme/toolbox/Event/src/EventDispatcher.php(23): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
  | 4 /Users/joe/my-grav-project/system/src/Grav/Common/Grav.php(365): RocketTheme\Toolbox\Event\EventDispatcher->dispatch('onTwigInitializ...', Object(RocketTheme\Toolbox\Event\Event))
  | 5 /Users/joe/my-grav-project/system/src/Grav/Common/Twig/Twig.php(175): Grav\Common\Grav->fireEvent('onTwigInitializ...')
  | 6 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/TwigProcessor.php(24): Grav\Common\Twig\Twig->init()
  | 7 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(45): Grav\Common\Processors\TwigProcessor->process(Object(Nyholm\Psr7\ServerRequest), Object(Grav\Framework\RequestHandler\RequestHandler))
  | 8 /Users/joe/my-grav-project/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php(57): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))
  | 9 /Users/joe/my-grav-project/system/src/Grav/Common/Processors/AssetsProcessor.php(28): Grav\Framework\RequestHandler\RequestHandler->handle(Object(Nyholm\Psr7\ServerRequest))
  | 
  | 2019-03-14 05:52:46 [WARNING] Plugin 'simplesearch.bak' enabled but not found! Try clearing cache with `bin/grav clear-cache`
  | ...

Nouveau projet.

Chaque fois que vous souhaitez démarrer un nouveau projet avec Grav, vous devez commencer avec une instance Grav propre. Grâce à la CLI, ce processus est très simple et ne prend que quelques secondes.

1.Lancez un terminal ou une console et accédez au dossier grav (pour les besoins de ce document, nous supposerons qu'il réside sous ~/Projects/grav).

 $ | cd ~/Projects/grav

2.Exécutez Grav CLI pour créer un nouveau projet, la destination étant l'emplacement où votre projet résidera (généralement la racine Web de votre serveur Web). Supposons que nous créons un portfolio et que nous le voulons à ~/Webroot/portfolio.

 $ | bin/grav new-project ~/webroot/portfolio

Cela créera une nouvelle instance Grav et téléchargera toutes les dépendances requises.

Bac à sable.

Grav a un utilitaire astucieux appelé sandbox, qui peut rapidement créer une copie symbolique de l'installation de Grav. En termes simples, l'exécution de bin/grav sandbox -s DESTINATION - où "DESTINATION" est le chemin d'accès au dossier dans lequel vous souhaitez copier l'installation - recrée l'installation Grav dans un autre dossier.

Par exemple, en exécutant :

 $ | bin/grav sandbox -s ../copy

À partir de votre dossier Grav actuel, créez un dossier frère nommé copy, où les dossiers suivants sont des copies virtuelles : /bin, /system, /vendor, /webserver-configs, ainsi que des fichiers standard qui résident généralement dans le dossier racine de Grav. Tout le contenu de /user sera des copies carbone, et non virtuelles, vous pouvez donc facilement commencer à personnaliser la nouvelle installation sans avoir créé de surcharge à partir des fichiers principaux.

Planificateur.

Comme indiqué dans la section Avancé -> Planificateur, le planificateur peut être surveillé via la commande CLI.

La commande de base exécutera manuellement les tâches du planificateur qui sont dues :

 $ | bin/grav scheduler

Pour obtenir plus de détails, vous pouvez utiliser l'option facultative -v :

$ | bin/grav scheduler -v
  |
  | Running Scheduled Jobs
  | ======================
  |
  | [2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::purgeJob
  | [2019-02-27T12:34:07-07:00] Success: Grav\Common\Cache::clearJob
  | [2019-02-27T12:34:07-07:00] Success: ls -lah

Les autres options incluent :

 -i, --install         Show Install Command
 -j, --jobs            Show Jobs Summary
 -d, --details         Show Job Details

Veuillez vous référer à la section Avancé -> Planificateur, pour des informations plus détaillées sur ces options.

Sécurité.

Ajouté dans Grav 1.5 est une nouvelle commande CLI du scanner de sécurité. Vous pouvez l'exécuter pour analyser rapidement votre contenu par rapport aux paramètres de sécurité configurés.

$ | bin/grav security
  | 
  | Grav Security Check
  | ===================
  |
  | Scanning 11 pages [===================================================] 100% < 1 sec
  |
  | [OK] Security Scan complete: No issues found...

Informations PHP CGI-FCGI.

Pour déterminer si votre serveur exécute cgi-fcgi sur la ligne de commande, tapez ce qui suit :

$ | $ php -v
  | PHP 5.5.17 (cgi-fcgi) (built: Sep 19 2014 09:49:55)
  | Copyright (c) 1997-2014 The PHP Group
  | Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
  |    with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd.

Si vous voyez une référence à (cgi-fcgi), vous devrez préfixer toutes les commandes bin/grav avec php-cli. Alternativement, vous pouvez configurer un alias dans votre shell avec quelque chose comme : alias php="php-cli" qui garantira que la version CLI de PHP s'exécute à partir de la ligne de commande.