205 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			205 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | |
| source "$(dirname "$0")/lib/ulib/ulib" || exit 1
 | |
| urequire DEFAULTS ptools xmlsupport
 | |
| 
 | |
| function pver_display_help() {
 | |
|     uecho "$scriptname: gérer des numéros de version selon les règles du versionage sémantique v2.0.0 (http://semver.org/)
 | |
| 
 | |
| USAGE
 | |
|     $scriptname [options]
 | |
| 
 | |
| OPTIONS
 | |
|     -w, --auto-file DIR
 | |
|         Gérer le numéro de version du répertoire spécifié. Si un fichier pom.xml
 | |
|         existe dans ce répertoire, alors c'est l'option '-e DIR/pom.xml' qui est
 | |
|         activé. Si un fichier VERSION.txt existe dans ce répertoire, alors c'est
 | |
|         l'option '-f DIR/VERSION.txt' qui est activée. Sinon, un nouveau fichier
 | |
|         VERSION.txt est créé dans ce répertoire. C'est l'option par défaut.
 | |
|     --sw, --auto-string DIR
 | |
|         Prendre pour valeur de départ la version du répertoire spécifié. Si un
 | |
|         fichier pom.xml existe dans ce répertoire, alors c'est l'option -E qui
 | |
|         est activé. Si un fichier VERSION.txt existe dans ce répertoire, alors
 | |
|         c'est l'option -F qui est activée.
 | |
|     --gw, --auto-git-string [BRANCH:]DIR
 | |
|         Prendre pour valeur de départ la version du répertoire spécifié dans la
 | |
|         branche BRANCH (qui vaut par défaut master) du dépôt git. Si un fichier
 | |
|         pom.xml existe dans ce répertoire, alors c'est l'option -g qui est
 | |
|         activé. Si un fichier VERSION.txt existe dans ce répertoire, alors c'est
 | |
|         l'option -G qui est activée.
 | |
|     -e, --pom POMFILE
 | |
|         Gérer le numéro de version se trouvant dans le fichier pom.xml spécifié.
 | |
|         Le fichier DOIT exister. Implique --maven-update
 | |
|     -E, --pom-string POMFILE
 | |
|         Prendre pour valeur de départ la version contenue dans le fichier
 | |
|         pom.xml spécifié. Le fichier DOIT exister. Implique --maven-update
 | |
|     -f, --file VERSIONFILE
 | |
|         Gérer le numéro de version se trouvant dans le fichier spécifié. Le
 | |
|         fichier est créé si nécessaire.
 | |
|     -F, --file-string VERSIONFILE
 | |
|         Prendre pour valeur de départ le contenu du fichier VERSIONFILE.
 | |
|     -g, --git-file-string [BRANCH:]VERSIONFILE
 | |
|         Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
 | |
|         vaut par défaut VERSION.txt) dans la branche BRANCH (qui vaut par défaut
 | |
|         master) du dépôt git. Retourner 2 si on n'est pas situé dans un dépôt
 | |
|         git.
 | |
|     -G, --git-pom-string [BRANCH:]POMFILE
 | |
|         Prendre pour valeur de départ la version du fichier POMFILE (qui vaut
 | |
|         par défaut pom.xml) dans la branche BRANCH (qui vaut par défaut master)
 | |
|         du dépôt git. Retourner 2 si on n'est pas situé dans un dépôt git.
 | |
|     --git-prel-string
 | |
|         Prendre pour valeur de départ le numéro de version correspondant à la
 | |
|         branche de release courante. Retourner 1 si la branche courante n'est
 | |
|         pas une branche de release, 2 si on n'est pas situé dans un dépôt git.
 | |
|     -s, --string VERSION
 | |
|         Prendre pour valeur de départ le numéro de version spécifié
 | |
| 
 | |
|     --show
 | |
|         Afficher le numéro de version. C'est l'action par défaut
 | |
|     --check
 | |
|         Vérifier que le numéro de version est conforme aux règles du versionage
 | |
|         sémantique
 | |
|     --eq VERSION
 | |
|     --ne VERSION
 | |
|     --lt VERSION
 | |
|     --le VERSION
 | |
|     --gt VERSION
 | |
|     --ge VERSION
 | |
|     --same VERSION
 | |
|     --diff VERSION
 | |
|         Comparer avec la version spécifiée. Les opérateurs --eq, --ne, --lt,
 | |
|         --le, --gt, et --ge ignorent l'identifiant de build (comme le demande la
 | |
|         règle du versionage sémantique). Les opérateurs --same et --diff
 | |
|         comparent aussi les identifiants de build.
 | |
|     -u, --update
 | |
|         Mettre à jour le numéro de version.
 | |
| 
 | |
| Les options suivantes impliquent --update:
 | |
|     -v, --set-version VERSION
 | |
|         Spécifier un nouveau numéro de version qui écrase la valeur actuelle.
 | |
|         Cette option ne devrait pas être utilisée en temps normal parce que cela
 | |
|         va contre les règles du versionage sémantique.
 | |
|     --prel
 | |
|         Spécifier un nouveau numéro de version qui écrase la valeur actuelle. Le
 | |
|         numéro de version est obtenu à partir du nom de la branche git courante,
 | |
|         qui doit être de la forme release-VERSION
 | |
|     --menu
 | |
|         Afficher un menu permettant de choisir le composant de la version à
 | |
|         incrémenter.
 | |
|     -x, --major
 | |
|         Augmenter le numéro de version majeure.
 | |
|     -z, --minor
 | |
|         Augmenter le numéro de version mineure. C'est la valeur par défaut, sauf
 | |
|         avec --maven-update où c'est l'option -p qui est sélectionnée par
 | |
|         défaut.
 | |
|     -p, --patchlevel
 | |
|         Augmenter le numéro de patch.
 | |
|     -k, --keep
 | |
|         Ne pas augmenter le numéro de version. Cette option est surtout utile
 | |
|         pour *convertir* un numéro de version existant et mettre à jour le
 | |
|         fichier correspondant. Elle est assumée si aucune option -[xzp] n'est
 | |
|         spécifiée et qu'une des options -[labrSRmM] est utilisée.
 | |
| 
 | |
|     -l, --prelease ID
 | |
|         Spécifier un identifiant de pré-release, à ajouter au numéro de version.
 | |
|     -a, --alpha
 | |
|     -b, --beta
 | |
|     -r, --rc
 | |
|         Spécifier une pré-release de type alpha, beta, ou rc. Si la version est
 | |
|         déjà dans ce type, augmenter la dernière valeur numérique des composants
 | |
|         de l'identifiant, e.g. alpha deviant alpha.1, beta-1.2 devient beta-1.3,
 | |
|         rc1 devient rc2
 | |
|         XXX ces fonctions ne sont pas encore implémentées
 | |
|     -S, --snapshot
 | |
|         Ajouter l'identifiant SNAPSHOT, utilisé par Maven
 | |
|     -R, --final, --release
 | |
|         Supprimer l'identifiant de prérelease, utilisé par Maven
 | |
| 
 | |
|     -m, --metadata ID
 | |
|         Spécifier un identifiant de build, à ajouter au numéro de version.
 | |
|     -M, --vcs-metadata
 | |
|         Calculer l'identifiant de build à partir de la révision actuelle dans le
 | |
|         gestionnaire de version. Note: pour le moment, seul git est supporté.
 | |
|     --add-metadata ID
 | |
|         Ajouter l'identifiant spécifié à la valeur actuelle, au lieu de la
 | |
|         remplacer. Séparer l'identifiant de la valeur précédente avec un '.'
 | |
| 
 | |
| OPTIONS AVANCEES
 | |
|     --show-source
 | |
|         Afficher le type de source qui sera traité, i.e. pom, file, pom-string,
 | |
|         file-string, git-pom-string, git-file-string
 | |
|     --vpath VPATH
 | |
|         Pour les options -e et -E, spécifier le chemin XPATH du tag qui contient
 | |
|         le numéro de version.
 | |
|     --map MAPFILE
 | |
|         Cette option permet de spécifier un fichier de règles qui indique les
 | |
|         fichiers pom.xml et VERSION.txt qui doivent être mis à jour dans un
 | |
|         projet multi-modules pour lequel les versions doivent être mises à jour
 | |
|         en même temps.
 | |
|         Par défaut, si un fichier nommé .pver-map existe dans le répertoire de
 | |
|         {POM,VERSION}FILE, cette option est automatiquement activée. Ainsi, on
 | |
|         n'aura besoin d'utiliser cette option que si l'on désire charger un
 | |
|         fichier alternatif ou ignorer le fichier par défaut.
 | |
|         Si une valeur vide est fournie, seul le fichier {POM,VERSION}FILE est
 | |
|         traité. Sinon, {POM,VERSION}FILE est utilisé uniquement pour chercher le
 | |
|         fichier .pver-map et seuls les fichiers mentionnés dans MAPFILE sont
 | |
|         traités.
 | |
|         Le fichier MAPFILE est constitué d'un ensemble de lignes de la forme
 | |
|             FILESPEC:VPATH
 | |
|         FILESPEC est requis et prend la forme d'une spécification de chemin
 | |
|         relatif au répertoire de MAPFILE et identifiant un ensemble de fichiers
 | |
|         de version. Si FILESPEC contient des wildcards, alors les fichiers
 | |
|         identifiés par ce chemin sont ignorés s'ils ont déjà été traités par une
 | |
|         règle précédente. Si FILESPEC ne contient pas de wildcards, alors le
 | |
|         fichier est systématiquement traité.
 | |
|         VPATH désigne le chemin XPATH vers le numéro de version qu'il faut
 | |
|         mettre à jour dans les fichiers pom.xml. Certaines valeurs spéciales
 | |
|         pour VPATH sont supportées:
 | |
|             (vide)  le chemin par défaut est utilisé pour ce fichier, c'est à
 | |
|                     dire /project/version ou /project/parent/version en fonction
 | |
|                     du contenu du fichier
 | |
|             -       le fichier pom.xml n'est pas modifié (il est ignoré)
 | |
|             D       alias pour le chemin XPATH /project/version
 | |
|             P       alias pour le chemin XPATH /project/parent/version
 | |
|         Pour les fichiers VERSION.txt, VPATH doit être vide
 | |
|         Le fichier de version correspondant au premier fichier de la première
 | |
|         ligne de MAPFILE contient la version de référence, qui est dupliquée
 | |
|         dans tous les autres fichiers.
 | |
|     --allow-empty
 | |
|         Supporter que la version puisse ne pas être spécifiée ni trouvée. Sans
 | |
|         cette option, on assume que la version effective est 0.0.0 si elle n'est
 | |
|         pas spécifiée ni trouvée.
 | |
|         Avec --show et --update, ne rien afficher si la version est vide.
 | |
|     --convert
 | |
|     --no-convert
 | |
|         Activer (resp. désactiver) la conversion automatique.  Par défaut, si la
 | |
|         version est au format classique 'x.z[.p]-rDD/MM/YYYY', elle est
 | |
|         convertie automatiquement au format sémantique x.z.p+rYYYYMMDD
 | |
|     -t, --maven-update
 | |
|         Mettre à jour le numéro de version selons les règles de Maven. Cette
 | |
|         option est automatiquement activée si -e est sélectionné. Elle n'est
 | |
|         prise en compte qu'avec l'option -u
 | |
|         Si les options -R et -S ne sont pas spécifiée, alors une release est
 | |
|         transformée en snapshot et une snapshot en release. Avec -R, une
 | |
|         snapshot est transformée en release, et une release est traitée /
 | |
|         incrémentée normalement. Avec -S une release est transformée en
 | |
|         snapshot, et un snapshot est traité / incrémentée normalement.
 | |
|         Si l'une des options -x, -z, -p est utilisée, alors la partie spécifiée
 | |
|         est incrémentée selon les règles suivantes. Dans les exemples suivants,
 | |
|         A est un nombre quelconque, B = A + 1, et x, y et z sont des nombres
 | |
|         quelconques.
 | |
|         Avec l'option -x:
 | |
|             A.0.0-SNAPSHOT --> A.0.0
 | |
|             A.x.y-SNAPSHOT --> B.0.0
 | |
|             x.A.y          --> x.B.0-SNAPSHOT
 | |
|         Avec l'option -z:
 | |
|             x.A.0-SNAPSHOT --> x.A.0
 | |
|             x.A.y-SNAPSHOT --> x.B.0
 | |
|             x.A.y          --> x.B.0-SNAPSHOT
 | |
|         Avec l'option -p, qui est celle sélectionnée par défaut:
 | |
|             x.y.z-SNAPSHOT --> x.y.z
 | |
|             x.y.A          --> x.y.B-SNAPSHOT"
 | |
| }
 | |
| 
 | |
| pver "$@"
 |