importation initiale dans git
This commit is contained in:
129
mkusfx
Executable file
129
mkusfx
Executable file
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
function display_help() {
|
||||
uecho "$scriptname: Créer une archive auto-extractible qui installe son contenu avec uinst
|
||||
|
||||
USAGE
|
||||
$scriptname [options] [--bare] src cmd...
|
||||
$scriptname [options] [--uinst] src
|
||||
|
||||
OPTIONS
|
||||
--bare
|
||||
Installer le contenu de l'archive en lançant la commande 'cmd...' avec
|
||||
le répertoire courant étant le contenu de l'archive. Typiquement, ce
|
||||
sera une commande de forme './script', où script est un fichier situé à
|
||||
la racine de l'archive
|
||||
Dans ce mode d'installation, l'option --self-contained est ignorée.
|
||||
--uinst
|
||||
Installer le contenu de l'archive avec uinst (par défaut)
|
||||
-o dest
|
||||
Spécifier le fichier de sortie. Par défaut, il s'agit de
|
||||
\${src}-installer.run
|
||||
--tmp-archive
|
||||
Spécifier qu'il s'agit d'une archive temporaire. Cette archive
|
||||
s'auto-détruit après utilisation.
|
||||
--self-contained
|
||||
Spécifier que l'archive doit pouvoir s'installer même sur un système sur
|
||||
lequel nutools n'est pas installé. Cette archive contiendra une copie
|
||||
locale de ulib et uinst.sh"
|
||||
}
|
||||
|
||||
source "$(dirname "$0")/ulib/ulib" &&
|
||||
urequire DEFAULTS ||
|
||||
exit 1
|
||||
|
||||
MAKESELFDIR="$scriptdir/lib/makeself-2.1.5"
|
||||
|
||||
sfxtype=uinst
|
||||
mode=755
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
--help '$exit_with display_help' \
|
||||
--bare sfxtype=bare \
|
||||
--uinst sfxtype=uinst \
|
||||
-o: dest \
|
||||
-m: mode= \
|
||||
--tmp-archive tmp_archive \
|
||||
--self-contained self_contained \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
src="$(abspath "${1:-.}")"
|
||||
srcname="$(basename "$src")"
|
||||
|
||||
################################################################################
|
||||
if [ "$sfxtype" == "uinst" ]; then
|
||||
ac_set_tmpdir archivedir
|
||||
conf="$archivedir/uinst_prepare.conf"
|
||||
|
||||
## préparer l'installation
|
||||
"$scriptdir/uinst" --prepare-1s "$archivedir" \
|
||||
--prepare-conf "$conf" \
|
||||
${self_contained:+--prepare-with-ulib} \
|
||||
"$src" || die
|
||||
|
||||
# la commande ci-dessus crée un fichier de configuration avec la variable
|
||||
# prepare_name qui contient le *nom* du répertoire ou du fichier dans
|
||||
# $archivedir à installer
|
||||
source "$conf"
|
||||
[ -n "$dest" ] || dest="${prepare_name}_installer.run"
|
||||
|
||||
# si le fichier à générer se trouve dans le répertoire à installer, créer
|
||||
# l'archive dans le répertoire au-dessus
|
||||
dest="$(abspath "$dest")"
|
||||
if [ "$src" == "$dest" -o "${dest#$src/}" != "$dest" ]; then
|
||||
dest="$(dirname "$src")/$(basename "$dest")"
|
||||
fi
|
||||
|
||||
if [ -f "$dest" -a -z "$tmp_archive" ]; then
|
||||
ask_yesno "Voulez-vous remplacer l'archive existante $(ppath "$dest")?" O || exit 0
|
||||
fi
|
||||
|
||||
## arguments pour la création de l'archive
|
||||
args=("$MAKESELFDIR/makeself.sh" --quiet ${tmp_archive:+--tmp-archive} --nox11
|
||||
"$archivedir" "$dest"
|
||||
"$srcname installer"
|
||||
)
|
||||
|
||||
if [ -n "$self_contained" ]; then
|
||||
args=("${args[@]}" /bin/sh ./uinst.sh --prepare-2s)
|
||||
else
|
||||
args=("${args[@]}" uinst)
|
||||
fi
|
||||
args=("${args[@]}" "$prepare_name")
|
||||
|
||||
################################################################################
|
||||
elif [ "$sfxtype" == "bare" ]; then
|
||||
shift
|
||||
[ -n "$*" ] || die "Vous devez spécifier la commande à lancer pour installer l'archive"
|
||||
[ -d "$src" ] || die "$src doit être un répertoire"
|
||||
[ -n "$dest" ] || dest="${srcname}_installer.run"
|
||||
|
||||
# si le fichier à générer se trouve dans le répertoire à installer, créer
|
||||
# l'archive dans le répertoire au-dessus
|
||||
dest="$(abspath "$dest")"
|
||||
if [ "$src" == "$dest" -o "${dest#$src/}" != "$dest" ]; then
|
||||
dest="$(dirname "$src")/$(basename "$dest")"
|
||||
fi
|
||||
|
||||
if [ -f "$dest" -a -z "$tmp_archive" ]; then
|
||||
ask_yesno "Voulez-vous remplacer l'archive existante $(ppath "$dest")?" O || exit 0
|
||||
fi
|
||||
|
||||
## arguments pour la création de l'archive
|
||||
args=("$MAKESELFDIR/makeself.sh" --quiet ${tmp_archive:+--tmp-archive} --nox11
|
||||
"$src" "$dest"
|
||||
"$srcname installer"
|
||||
"$@"
|
||||
)
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
# créer l'archive
|
||||
|
||||
estep "Création de l'archive $(ppath "$dest")"
|
||||
"${args[@]}"
|
||||
|
||||
# l'archive doit être exécutable
|
||||
[ -n "$mode" ] && chmod "$mode" "$dest"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user