nutools/pz

67 lines
2.0 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 vcs ptools
function display_help() {
uecho "$scriptname: faire une archive du projet
USAGE
$scriptname
OPTIONS
-C, --projdir PROJDIR
Spécifier le répertoire de base du projet qui est dans git. Par défaut,
on travaille dans le répertoire courant et on laisse git trouver le
répertoire de base du projet. Avec cette option, le répertoire courant
est modifié avant de lancer les commandes git.
-d, --destdir DESTDIR
Spécifier le répertoire dans lequel générer l'archive. Par défaut,
prendre le répertoire parent du répertoire de base du dépôt."
}
projdir=
destdir=
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-C:,--projdir: projdir= \
-d:,--destdir: destdir= \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ -n "$projdir" ]; then
cd "$projdir" || die
git_ensure_gitvcs
else
git_ensure_gitvcs
setx projdir=git rev-parse --show-toplevel
cd "$projdir" || die
fi
setx projdir=pwd
if [ -z "$destdir" ]; then
setx destdir=dirname -- "$projdir"
fi
setx name=basename -- "$projdir"
setx branch=git rev-parse --short HEAD 2>/dev/null
setx version=pver --show --allow-empty
[ -n "$version" ] && setx version=pver --show --string "$version" --add-metadata "$branch"
[ -n "$version" ] || version="+$branch"
if check_sysinfos -d debian -v squeeze-; then
# git archive sous debian squeeze a un bug: il génère un fichier tar au lieu
# d'un fichier tar compressé. Nous ferons donc la compression nous même.
dest="$destdir/$name${version:+-$version}.tar"
gzip=1
else
dest="$destdir/$name${version:+-$version}.tar.gz"
gzip=
fi
estep "Création de $(ppath "$dest")"
git archive -o "$dest" --prefix="$name${version:+-$version}/" HEAD || die
[ -n "$gzip" ] || exit 0
estep "Compression de l'archive"
gzip -f "$dest"