nutools/legacy/instinc/wotag

164 lines
5.6 KiB
Bash

# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
##@require instinc/prefixes
##@require instinc/wobase
##@require instinc/wofunctions
function wotag_display_help() {
echo "$scriptname: attacher une information de version à une application ou un framework
USAGE
$scriptname <app.woa|fw.framework>"
}
function wotag() {
local action=tag description version releaseDate developmentSnapshot message
local tagdir="$1" srcdir bundir srvresdir
local end_of_options
##@include sysinc/begingetopt
-h|--help)
wotag_display_help
exit 0
;;
-c|--check-tagged)
action=check
;;
-s|--show)
action=show
;;
-v|--version)
# spécifier le numéro de version, ou - s'il n'y a pas de numéro de version
shift
version="$1"
;;
-d|--date)
# spécifier la date de release
shift
releaseDate="$1"
;;
-m|--desc)
# spécifier la description de l'application ou du framework
shift
description="$1"
;;
--message)
shift
message="$1"
;;
##@include sysinc/endgetopt
if [ -z "$tagdir" ]; then
die "Il faut spécifier l'application ou le framework à tagger"
fi
tagdir="$(abspath "$1")"
if is_wosrcdir "$tagdir"; then
srcdir="$tagdir"
set_wobindir "$srcdir" bundir desc
elif is_woappdir "$tagdir"; then
bundir="$tagdir"
elif is_wofwdir "$tagdir"; then
bundir="$tagdir"
else
[ "$action" == "show" ] && return 1
die "Le bundle doit être un framework ou une application"
fi
bundir="${bundir%/}"
if endswith "$bundir" .woa; then
local srvresdir="$APP_SRVRESDIR"
elif endswith "$bundir" .framework; then
local srvresdir="$FW_SRVRESDIR"
fi
local infosfile="$(get_jawotools_properties_path "$bundir")"
local infosfile2="$bundir/jawotools.properties"
local versionfile="$(get_version_txt_path "$bundir/$srvresdir")"
if [ "$action" == "check" ]; then
if [ -f "$infosfile" ]; then
# vérifier la présence de description, version, releaseDate, developmentSnapshot
read_jawotools_properties "$infosfile"
if [ "$description" != "--NOT-SET--" -a "$version" != "--NOT-SET--" -a "$releaseDate" != "--NOT-SET--" -a "$developmentSnapshot" != "--NOT-SET--" ]; then
return 0
fi
fi
return 1
elif [ "$action" == "show" ]; then
if [ -f "$infosfile" ]; then
read_jawotools_properties "$infosfile"
[ "$description" == "--NOT-SET--" ] && description=
[ "$version" == "--NOT-SET--" ] && version=
[ "$releaseDate" == "--NOT-SET--" ] && releaseDate=
[ "$developmentSnapshot" == "--NOT-SET--" ] && developmentSnapshot=
if [ -z "$version" -a -z "$releaseDate" ]; then
einfo "${message:-$(basename "$bundir")}: ?"
else
einfo "${message:-$(basename "$bundir")}: Version${version:+ $version}${releaseDate:+ du $releaseDate}${developmentSnapshot:+ (developmentSnapshot)}"
fi
else
einfo "${message:-$(basename "$bundir")}: ?"
fi
return 0
elif [ "$action" == "tag" ]; then
developmentSnapshot=
if [ -z "$description" -a -f "$infosfile" ]; then
read_jawotools_properties "$infosfile"
fi
if [ -f "$versionfile" ]; then
# si le fichier de version existe...
version="$(awk <"$versionfile" '{
gsub("-r../../....$", "")
print
exit
}')"
releaseDate="$(awk <"$versionfile" '{
if ($0 ~ /.*-r..\/..\/....$/) {
gsub(".*-r", "")
print
}
exit
}')"
developmentSnapshot=
if [ -n "$srcdir" -a -x "$scriptdir/reldiff" ]; then
"$scriptdir/reldiff" -p "$srcdir" -c && developmentSnapshot=1
fi
else
# pas de fichier de version. il faut saisir les valeurs à la main
version_or_date_flag=-i
[ \( -z "$version" -o "$version" == "-" \) -a -z "$releaseDate" ] && version_or_date_flag=-c
read_value -i "Entrez la description" description "$description" N
if [ "$version" == "-" ]; then
version=
else
read_value $version_or_date_flag "Entrez la version (vide s'il n'y a que la date de release)" version "$version" N
[ "$version" == "-" ] && version=
fi
if [ -z "$releaseDate" ]; then
# date de release par défaut: la date du jour
releaseDate="$(date +"%d/%m/%Y")"
fi
read_value $version_or_date_flag "Entrez la date de release" releaseDate "$releaseDate" N
[ "$releaseDate" == "-" ] && releaseDate=
if [ -z "$version" -a -z "$releaseDate" ]; then
die "Il faut avoir un numéro de version et/ou une date de release"
fi
fi
einfo "${message:-$(basename "$bundir")}: Version${version:+ $version}${releaseDate:+ du $releaseDate}${developmentSnapshot:+ (developmentSnapshot)}"
[ "$infosfile" != "$infosfile2" ] && rm -f "$infosfile"
file_set_properties -c "$infosfile2" description "$description" version "$version" releaseDate "$releaseDate" developmentSnapshot "$developmentSnapshot"
else
die "Action inconnue: $action"
fi
}