164 lines
5.6 KiB
Bash
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
|
|
}
|