Suivant: Invoquer guix lint
, Précédent: Invoquer guix refresh
, Monter: Utilitaires [Table des matières][Index]
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 :
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]