Suivant: , Précédent: , Monter: Utilitaires   [Table des matières][Index]


9.7 Invoquer guix style

La commande guix style aide aussi bien les utilisateur·ices que les auteur·ices de paquets à présenter leurs définitions de paquets et leurs fichiers de configuration suivant la toute dernière mode. Elle peut aussi bien reformater des fichiers entiers, avec l’option --whole-file, qu’appliquer des règles de style spécifiques à des définitions de paquets individuelles. La commande fournit actuellement les règles stylistiques suivantes :

La manière dont les entrées des paquets sont écrites est en phase de transition (voir Référence de package, pour plus d’information sur les entrées des paquets). Jusqu’à la version 1.3.0, les entrées des paquets étaient écrites avec l’« ancien style », où chaque entrée était associée à une étiquette explicite, la plupart du temps le nom du paquet :

(package
  ;; …
  ;; L'« ancien style » (obsolète).
  (inputs `(("libunistring" ,libunistring)
            ("libffi" ,libffi))))

Aujourd’hui, l’ancien style est obsolète et le style de préférence ressemble à ceci :

(package
  ;; …
  ;; Le « nouveau style ».
  (inputs (list libunistring libffi)))

De la même manière, l’utilisation de alist-delete et compagnie pour manipuler les entrées est maintenant obsolète en faveur de modify-inputs (voir Définition de variantes de paquets, pour plus d’information sur modify-inputs).

Dans la grande majorité des cas, c’est un changement purement mécanique de la syntaxe qui ne provoque même pas de reconstruction du paquet. Lancer guix style -S inputs peut le faire pour vous, que vous travailliez sur des paquets dans Guix ou dans un canal externe.

La syntaxe générale est :

guix style [options] paquet

Cela fait analyser et réécrire la définition des paquet… à guix style ou, si paquet est omis, de tous les paquets. Les options --styling ou -S vous permettent de choisir la règle de style, la règle par défaut est format — voir plus bas.

Pour reformater des fichiers sources complets, la syntaxe est :

guix style --whole-file fichier

Les options disponibles sont listées ci-dessous.

--dry-run
-n

Montre les emplacement dans les fichiers sources qui seraient modifiés mais sans les modifier.

--whole-file
-f

Reformate entièrement les fichiers donnés. Dans ce cas, les arguments suivants sont interprétés comme des noms de fichiers (plutôt que des noms de paquets), et l’option --styling n’a aucun effet.

Par exemple, voici comme vous pouvez reformater votre configuration de système d’exploitation (vous devez avoir les permissions en écriture sur le fichier) :

guix style -f /etc/config.scm
--alphabetical-sort
-A

Place the top-level package definitions in the given files in alphabetical order. Package definitions with matching names are placed with versions in descending order. This option only has an effect in combination with --whole-file.

--styling=règle
-S règle

Applique la règle, l’une des règles de style suivantes :

format

Formate les définitions de paquets données — c’est la règle de style par défaut. Par exemple, la personne qui crée un paquet et qui utilise le Guix du checkout (voir Lancer Guix avant qu’il ne soit installé) peut vouloir reformater la définition du paquet Coreutils de cette manière :

./pre-inst-env guix style coreutils
inputs

Réécrit les entrées du paquet en le « nouveau style », décrit plus haut. Vous pouvez réécrire les entrées d’un paquet toto dans votre propre canal de cette manière :

guix style -L ~/mon/canal -S inputs toto

La réécriture s’effectue de manière prudente : les commentaires sont préservés et le processus s’arrête s’il n’arrive pas à comprendre le code du champ inputs. L’option --input-simplification décrite plus bas fournit un contrôle plus fin sur les entrées qui devraient être simplifiées.

arguments

Rewrite package arguments to use G-expressions (voir G-Expressions). For example, consider this package definition:

(define-public my-package
  (package
    ;; …
    (arguments      ;old-style quoted arguments
     '(#:make-flags '("V=1")
       #:phases (modify-phases %standard-phases
                  (delete 'build))))))

Running guix style -S arguments on this package would rewrite its arguments field like to:

(define-public my-package
  (package
    ;; …
    (arguments
      (list #:make-flags #~'("V=1")
            #:phases #~(modify-phases %standard-phases
                         (delete 'build))))))

Note that changes made by the arguments rule do not entail a rebuild of the affected packages. Furthermore, if a package definition happens to be using G-expressions already, guix style leaves it unchanged.

--list-stylings
-l

Liste et décrit les règles de style puis quitte.

--load-path=répertoire
-L répertoire

Ajoute répertoire au début du chemin de recherche de module de paquets (voir Modules de paquets).

--expression=expr
-e expr

Reformate le paquet évalué par expr.

Par exemple, lancer :

guix style -e '(@ (gnu packages gcc) gcc-5)'

modifie le style de la définition du paquet gcc-5.

--input-simplification=politique

Lorsque vous utilisez la règle de style inputs, avec ‘-S inputs’, cette option spécifie la politique de simplification des entrées du paquet dans le cas où les étiquettes des entrées ne correspondent pas au nom du paquet. La politique peut être l’une des suivantes :

silent

Simplifie les entrées seulement si le changement est « silencieux », ce qui signifie que le paquet n’a pas besoin d’être reconstruit (sa dérivation reste inchangée).

safe

Simplifie les entrées seulement si c’est « sûr » : le paquet peut avoir besoin d’être reconstruit, mais on est sûr que le changement n’aura aucun effet observable.

always

Simplifie les entrées même si les étiquettes des entrées ne correspondent pas au nom du paquet, et même si le changement peut avoir un effet observable.

La valeur par défaut est silent, ce qui signifie que les simplifications des entrées n’entraine aucune reconstruction de paquet.


Suivant: Invoquer guix lint, Précédent: Invoquer guix refresh, Monter: Utilitaires   [Table des matières][Index]