-F permet de lire le contenu d'un fichier de version sans le mettre à jour

This commit is contained in:
Jephté Clain 2015-03-05 10:12:00 +04:00
parent 67d918b1b9
commit 1a595da1bc
1 changed files with 24 additions and 11 deletions

View File

@ -14,7 +14,10 @@ OPTIONS
Gérer le numéro de version se trouvant dans le fichier spécifié. Le
fichier est créé si nécessaire. C'est l'option par défaut si un fichier
nommé VERSION.txt se trouve dans le répertoire courant.
-g, --git [branch:]VERSIONFILE
-F, --file-string VERSIONFILE
Prendre pour valeur de départ le contenu du fichier VERSIONFILE (qui
vaut par défaut VERSION.txt)
-g, --git-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 situé dans le répertoire courant.
@ -80,6 +83,8 @@ OPTIONS
gestionnaire de version. Note: pour le moment, seul git est supporté."
}
DEFAULT_FILE=VERSION.txt
action=auto
source=auto
file=
@ -100,8 +105,9 @@ vcsmetadata=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-f:,--file: '$set@ file; source=file' \
-g:,--git: '$set@ git; source=git' \
-s:,--string: '$set@ version; source=' \
-F:,--file-string: '$set@ file; source=file-string' \
-g:,--git-string: '$set@ git; source=git-string' \
-s:,--string: '$set@ version; source=string' \
--show action=show \
--check action=check \
--convert convert=1 \
@ -130,7 +136,7 @@ parse_opts "${PRETTYOPTS[@]}" \
# Calculer la source
if [ "$source" == auto ]; then
source=file
for i in VERSION.txt version.txt; do
for i in "$DEFAULT_FILE" version.txt; do
if [ -f "$i" ]; then
file="$i"
break
@ -139,27 +145,35 @@ if [ "$source" == auto ]; then
elif [ "$source" == file ]; then
[ "$action" == auto ] && action=update
fi
[ "$source" == file -a -z "$file" ] && file=VERSION.txt
[ "$source" == file -a -z "$file" ] && file="$DEFAULT_FILE"
[ "$action" == auto ] && action=show
# Lire la version
if [ "$source" == file ]; then
[ -f "$file" ] && version="$(<"$file")"
[ -n "$version" ] || version=0.0.0
elif [ "$source" == git ]; then
elif [ "$source" == file-string ]; then
if [ -z "$file" ]; then
file="$DEFAULT_FILE"
elif [ -d "$file" ]; then
file="$file/$DEFAULT_FILE"
fi
[ -f "$file" ] && version="$(<"$file")"
file=
elif [ "$source" == git-string ]; then
splitfsep2 "$git" : branch name
[ -n "$branch" ] || branch=master
[ -n "$name" ] || name=VERSION.txt
[ -n "$name" ] || name="$DEFAULT_FILE"
if git rev-parse --verify --quiet "$branch:$name" >/dev/null; then
version="$(git cat-file blob "$branch:$name" 2>/dev/null)"
fi
[ -n "$version" ] || version=0.0.0
fi
[ -n "$version" ] || version=0.0.0
# Conversion éventuelle du numéro de version
psemver_parse "$version"
[ -n "$valid" ] && convert=
if [ "$convert" == auto ]; then
[ -z "$valid" ] && convert=1 || convert=
[ -z "$valid" ] && convert=1
fi
if [ -n "$convert" ]; then
mversion="$(awkrun version="$version" '
@ -201,7 +215,6 @@ BEGIN {
fi
# Actions
if [ "$action" == show ]; then
if isatty; then
estepi "La version actuelle est $version"