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