Le format Mozcmd

Le format mozcmd est une façon de stocker des commandes GCLI. Il est disponible pour les utilisateurs de Firefox en paramétrant la devtools.commands.dir pour référencer un dossier contenant des fichiers .mozcmd.

Par exemple, si devtools.commands.dir référence C:\mozcmd (sous Windows ou /Users/me/mozcmd sous Mac/Unix), alors Firefox lira les fichiers mozcmd de ce dossier au lancement o bien lors d'un cmd refresh.

Syntaxe

Le format mozcmd est basé sur le format JSON, mais avec la possibilité d'insérer des fonctions dans les emplacements clés. Par exemple pour la fonction exec.

La racine du document est un tableau qui contient un certain nombre de commandes qui peuvent être envoyés à gcli.addCommand().

Fichier exemple

L'exemple suivent est tiré du dépôt de démonstration.

[
  {
    name: 'hello',
    description: 'Show a message',
    params: [
      {
        name: 'name',
        type: 'string',
        description: 'Who to say hello to',
      }
    ],
    exec: function(args, context) {
      return 'Good evening, ' + args.name;
    }
  }
]

Plusieurs commandes peuvent être placées dans un fichier. Les commandes prennent toujours leur nom de la propriété name plutôt que du nom du fichier.

Les commentaires ne sont pas autorisés sauf à l'intérieur des fonctions.

Lorsqu'une commande est exécutée, this vaudra l'objet parent, this.name sera donc le nom de la commande. Si une étape de paramétrage est requise, alors elle doit être faite à la première exécution et son résultat mis en cache dans this.

Sécurité

L'idée est d'assurer à l'utilisateur qu'utiliser un fichier mozcmd n'est pas un risque de sécurité,  ils doivent accéder aux commandes avec que du JavaScript ne soit exécuté.

(Il est à noter qu’'accéder' n'implique pas forcément que la commande doit être exécutée. Les commandes peuvent fournir des fonctions pour personnaliser leurs paramètres. "Accéder" est défini comme étant le fait de taper le nom de la commande dans la ligne de commande (que la touche "entrée" soit pressée ou non).

L'implémentation actuelle de mozcmd évalue simplement le script dans une " Sandbox". Cela ne fournit pas le niveau de protection attendu, cependant le bug Bug 767912 concerne l'amélioration du parser

Documentation avancée

Voir la documentation sur l'écriture des commandes.

Étendre le format mozcmd

Le format mozcmd est fait pour être facile extensible et supporter les Types et Fields.  Cette fonction n'est pas encore activée, cependant il est possible de voir voir comment le format est supposé fonctionner.

Étiquettes et contributeurs liés au document

Contributeurs à cette page : wbamberg, maximelore, teoli, ironfroggy
Dernière mise à jour par : wbamberg,