.. -*- coding: utf-8 -*-

.. _cubicweb-ctl:

L'outil `cubicweb-ctl`
======================
`cubicweb-ctl` est le couteau suisse pour la gestion d'instances CubicWeb.
La syntaxe générale est ::

  cubicweb-ctl <commande> [options commande] <arguments commandes>

Pour voir les commandes disponibles ::

  cubicweb-ctl
  cubicweb-ctl --help

A noter que les commandes disponibles varient en fonction des parties d'CubicWeb
qui sont installées.

Pour voir l'aide pour une commande spécifiques ::

  cubicweb-ctl <commande> --help

Commandes pour la création d'un cube
------------------------------------
* ``newcube``, crée un nouveau cube sur le système de fichiers
  à partir du nom passé en paramètre. Cette commande crée le cube à partir
  d'une squelette d'application, incluant également les fichiers pour le
  packaging debian)
  
Commandes pour la création d'une instance
-----------------------------------------
* ``create``, crée les fichiers de configuration d'une instance
* ``db-create``, crée la base de données système d'une instance (tables et
  extensions uniquement)
* ``db-init``, initialise la base de données système d'une instance (schéma,
  groupes, utilisateurs, workflows...)

Par défaut ces trois commandes sont enchainées.

Commande pour la création d'une instance pour Google App Engine
---------------------------------------------------------------
* ``newgapp``, crée les fichiers de configuration d'une instance

Cette commande doit être suivie de l'exécution de commandes
permettant l'initialisation de la base de données spécifique à  
Google App Engine, appellée ``datastore``.

Pour plus de détails veuillez vous référer à `LAX <>`_


Commandes pour le lancement des instances
-----------------------------------------
* ``start``, démarre une, plusieurs, ou toutes les instances
* ``stop``, arrêt une, plusieurs, ou toutes les instances
* ``restart``, redémarre une, plusieurs, ou toutes les instances
* ``status``, donne l'état des instances

Commandes pour la maintenance des instances
-------------------------------------------
* ``upgrade``, lance la migration d'instance(s) existante(s) lorsqu'une nouvelle
  version d'CubicWeb ou du composant est installée
* ``shell``, ouvre un shell de migration pour la maintenance manuelle d'une instance
* ``db-dump``, crée un dump de la base de données système
* ``db-restore``, restore un dump de la base de données système
* ``db-check``, vérifie l'intégrité des données d'une instance. Si la correction
  automatique est activée, il est conseillé de faire un dump avant cette
  opération
* ``schema-sync``, , synchronise le schéma persistent d'une instance avec le schéma
  de l'application. Il est conseillé de faire un dump avant cette opération

Commandes pour la maintenance des catalogues i18n
-------------------------------------------------
* ``i18ncubicweb``, regénère les catalogues de messages de la librairie CubicWeb
* ``i18ncube``, regénère les catalogues de messages d'un composant
* ``i18ninstance``, recompile les catalogues de messages d'une instance. Cela est
  effectué automatiquement lors d'une upgrade

Cf :ref:`Internationalisation`.

Autres commandes
----------------
* ``list``, donne la liste des configurations, des composants et des instances
  disponibles
* ``delete``, supprime une instance (fichiers de configuration et base de données)



Exemples
--------

Creation d'une instance a partir de cube existant
`````````````````````````````````````````````````

Afin de creer une instance a partir d'un cube existant, executez la commande
suivant ::

   cubicweb-ctl create <nom_cube> <nom_instance>

Cette commande va creer les fichiers de configuration d'une instance dans
``~/etc/cubicweb.d/<nom_instance>``.
L'outil ``cubicweb-ctl`` va vous autoriser a executer au sein de ``create``
les commandes ``db-create`` et ``db-init`` afin de completer la creation de
votre instance en une seule commande.

Si vous decidez de ne pas le faire lorsque ``cubicweb-ctl create`` vous le 
propose, alors n'oubliez pas de lancer ces commandes (``cubicweb-ctl db-create``,
``cubicweb-ctl db-init`` ) par la suite, sinon
votre installation ne sera pas complete.


Creation d'une instance a partir d'une nouveau cube
```````````````````````````````````````````````````

Creez avant tout votre nouveau cube ::

   cubicweb-ctl newcube <nom_cube>

Cette commande va creer un nouveau cube dans ``/path/to/forest/cubicweb/cubes/<nom_cube>``.


