uinst installe maintenant les profils en mode partagé par défaut
This commit is contained in:
parent
fb6b492d5c
commit
0f5b5720c2
8
bashrc
8
bashrc
|
@ -1,6 +1,12 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
||||
|
||||
function uprovide() { :; }
|
||||
source @@dest@@/lib/ulib/uenv || return
|
||||
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.${HOSTNAME%%.*}.d"
|
||||
if [ -n "$UTOOLS_LOCAL_PROFILES" ]; then
|
||||
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.${HOSTNAME%%.*}.d"
|
||||
else
|
||||
__uenv_source_dirs @@dest@@/bashrc.d "$HOME/etc/bashrc.d"
|
||||
fi
|
||||
__uenv_cleanup
|
||||
|
|
|
@ -12,3 +12,6 @@
|
|||
#export UTOOLS_BITS=32
|
||||
#export UTOOLS_MYSYSDIST="debian debianlike"
|
||||
#export UTOOLS_MYSYSVER="squeeze"
|
||||
|
||||
# Type d'installation pour les profils
|
||||
#export UTOOLS_LOCAL_PROFILES=
|
||||
|
|
|
@ -42,6 +42,15 @@ bcdir=lib/completion.d
|
|||
|
||||
# copier le fichier .nutoolsrc
|
||||
[ -f ~/.nutoolsrc ] || cp lib/nutoolsrc ~/.nutoolsrc
|
||||
if ! quietgrep UTOOLS_LOCAL_PROFILES= ~/.nutoolsrc; then
|
||||
echo "
|
||||
# Type d'installation pour les profils
|
||||
#export UTOOLS_LOCAL_PROFILES=" >>~/.nutoolsrc
|
||||
fi
|
||||
if [ "$UINST_LOCAL_PROFILES" != auto ]; then
|
||||
sedi "/UTOOLS_LOCAL_PROFILES=/c\\
|
||||
export UTOOLS_LOCAL_PROFILES=$(qvalr "$UINST_LOCAL_PROFILES")" ~/.nutoolsrc
|
||||
fi
|
||||
|
||||
# identification du système
|
||||
echo "##@before *" >lib/profile.d/0nutools
|
||||
|
|
|
@ -129,6 +129,7 @@ function uenv_update_dir() {
|
|||
local __myhostname="$MYHOSTNAME"
|
||||
>"$sio"
|
||||
for dir in "$@"; do
|
||||
[ -n "$dir" ] || continue
|
||||
for file in "$dir/"*; do
|
||||
[ -f "$file" ] || continue
|
||||
files=("${files[@]}" "$file")
|
||||
|
@ -188,13 +189,22 @@ function uenv_update_dir() {
|
|||
}
|
||||
|
||||
function uenv_set_destdirs() {
|
||||
local hostname="${HOSTNAME%%.*}"
|
||||
shared_profiledestdir="$HOME/etc/profile.d"
|
||||
shared_bashrcdestdir="$HOME/etc/bashrc.d"
|
||||
shared_defaultdestdir="$HOME/etc/default"
|
||||
profiledestdir="$HOME/etc/profile.${hostname}.d"
|
||||
bashrcdestdir="$HOME/etc/bashrc.${hostname}.d"
|
||||
defaultdestdir="$HOME/etc/default.${hostname}"
|
||||
if [ "$1" == --local-profiles ]; then
|
||||
local hostname="${HOSTNAME%%.*}"
|
||||
profiledestdir="$HOME/etc/profile.${hostname}.d"
|
||||
bashrcdestdir="$HOME/etc/bashrc.${hostname}.d"
|
||||
defaultdestdir="$HOME/etc/default.${hostname}"
|
||||
shared_profiledestdir="$HOME/etc/profile.d"
|
||||
shared_bashrcdestdir="$HOME/etc/bashrc.d"
|
||||
shared_defaultdestdir="$HOME/etc/default"
|
||||
else
|
||||
profiledestdir="$HOME/etc/profile.d"
|
||||
bashrcdestdir="$HOME/etc/bashrc.d"
|
||||
defaultdestdir="$HOME/etc/default"
|
||||
shared_profiledestdir=
|
||||
shared_bashrcdestdir=
|
||||
shared_defaultdestdir=
|
||||
fi
|
||||
}
|
||||
|
||||
function uenv_sourced_in() {
|
||||
|
@ -253,12 +263,17 @@ cas, il faut décommenter la ligne dans ~/.bash_profile qui source ~/.profile"
|
|||
}
|
||||
|
||||
function uenv_install_profiles() {
|
||||
local local_profiles
|
||||
if [ "$1" == --local-profiles ]; then
|
||||
local_profiles=1
|
||||
shift
|
||||
fi
|
||||
local projdir="$1" profiledir="$2" bashrcdir="$3" defaultdir="$4"
|
||||
local tmpfile
|
||||
local tmpfile shared
|
||||
local prefix envsrcdir envdestdir shadestdir envfiles envfile envsrc envdest shadest
|
||||
local shared_profiledestdir shared_bashrcdestdir shared_defaultdestdir
|
||||
local profiledestdir bashrcdestdir defaultdestdir
|
||||
uenv_set_destdirs
|
||||
uenv_set_destdirs ${local_profiles:+--local-profiles}
|
||||
|
||||
ac_set_tmpfile tmpfile
|
||||
for prefix in profile bashrc default; do
|
||||
|
@ -266,26 +281,35 @@ function uenv_install_profiles() {
|
|||
envdestdir="${prefix}destdir"; envdestdir="${!envdestdir}"
|
||||
shadestdir="shared_${prefix}destdir"; shadestdir="${!shadestdir}"
|
||||
[ -n "$envsrcdir" -a -d "$envsrcdir" ] || continue
|
||||
mkdir -p "$envdestdir" "$shadestdir"
|
||||
mkdir -p "$envdestdir"
|
||||
[ -n "$shadestdir" ] && mkdir -p "$shadestdir"
|
||||
|
||||
array_from_lines envfiles "$(list_files "$envsrcdir")"
|
||||
for envfile in "${envfiles[@]}"; do
|
||||
envsrc="$envsrcdir/$envfile"
|
||||
if [ "${envfile%.shared}" != "$envfile" ]; then
|
||||
# Avec l'extension .shared, toujours installer dans le
|
||||
# répertoire des profils partagés
|
||||
envsrc="$envsrcdir/$envfile"
|
||||
envfile="${envfile%.shared}"
|
||||
shadest="$shadestdir/$envfile"
|
||||
envdest="$shadest"
|
||||
shared=1
|
||||
else
|
||||
envsrc="$envsrcdir/$envfile"
|
||||
envdest="$envdestdir/$envfile"
|
||||
shadest="$shadestdir/$envfile"
|
||||
if [ ! -f "$envdest" -a -f "$shadest" ]; then
|
||||
# Si déjà installé en partagé, continuer à mettre à jour ce
|
||||
# fichier-là
|
||||
envdest="$shadest"
|
||||
shared=
|
||||
fi
|
||||
|
||||
if [ -n "$shadestdir" ]; then
|
||||
if [ -n "$shared" ]; then
|
||||
# si fichier partagé, toujours le copier dans le répertoire
|
||||
# des fichiers partagés
|
||||
envdest="$shadestdir/$envfile"
|
||||
else
|
||||
envdest="$envdestdir/$envfile"
|
||||
shadest="$shadestdir/$envfile"
|
||||
if [ ! -f "$envdest" -a -f "$shadest" ]; then
|
||||
# Si déjà installé en partagé, continuer à mettre à jour ce
|
||||
# fichier-là
|
||||
envdest="$shadest"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
envdest="$envdestdir/$envfile"
|
||||
fi
|
||||
|
||||
local actual_envdestdir="$(dirname -- "$envdest")"
|
||||
|
|
|
@ -17,6 +17,7 @@ function uinst() {
|
|||
# l'environnement de l'appelant.
|
||||
local UINST_CONFIGURE_FORCE
|
||||
local UINST_COPY_METHOD
|
||||
local UINST_LOCAL_PROFILES
|
||||
local -a UINST_DEFAULTS
|
||||
local -a UINST_CONFIG_VARS
|
||||
local -a UINST_CONFIG_VARCMDS
|
||||
|
@ -90,6 +91,11 @@ OPTIONS
|
|||
--include-vcs
|
||||
Inclure les fichiers de VCS dans les fichiers copiés. Par défaut, les
|
||||
fichiers de VCS sont exclus.
|
||||
-l, --local-profiles
|
||||
Installer les profils locaux comme tels
|
||||
--shared-profiles
|
||||
Installer les profils locaux comme des profils partagés. C'est la valeur
|
||||
par défaut pour compatibilité.
|
||||
-C Configurer un répertoire pour le déploiement avec uinst
|
||||
Ajouter l'option --force pour forcer la reconfiguration"
|
||||
}
|
||||
|
@ -131,6 +137,8 @@ OPTIONS
|
|||
--prefix UINST_AUTOPREFIX=1 \
|
||||
--no-prefix UINST_AUTOPREFIX= \
|
||||
--include-vcs UINST_COPY_METHOD=cpdir \
|
||||
-l,--local-profiles UINST_LOCAL_PROFILES=1 \
|
||||
--shared-profiles UINST_LOCAL_PROFILES= \
|
||||
-C UINST_ACTION=configure \
|
||||
-f,--force UINST_CONFIGURE_FORCE=1 \
|
||||
--prepare-1s: UINST_PREPARE_DIR \
|
||||
|
@ -171,6 +179,7 @@ OPTIONS
|
|||
function __uinst_init() {
|
||||
UINST_CONFIGURE_FORCE=
|
||||
UINST_COPY_METHOD="${UINST_COPY_METHOD:-cpdirnovcs}"
|
||||
UINST_LOCAL_PROFILES="${UTOOLS_LOCAL_PROFILES:-auto}"
|
||||
UINST_DEFAULTS=(
|
||||
uinc='release'
|
||||
uinc_options='()'
|
||||
|
@ -774,6 +783,7 @@ function __uinst_udir2s() {
|
|||
for __uinst_var in "${__uinst_arrays[@]}"; do
|
||||
set_array_cmd "$__uinst_var" >>"$__uinst_config"
|
||||
done
|
||||
set_var_cmd "UINST_LOCAL_PROFILES" "$UINST_LOCAL_PROFILES" >>"$__uinst_config"
|
||||
set_var_cmd "UINST_ISTMPDIR" "$UINST_ISTMPDIR" >>"$__uinst_config"
|
||||
set_var_cmd "UINST_ORIGSRC" "$UINST_ORIGSRC" >>"$__uinst_config"
|
||||
set_var_cmd "UINST_SRCDIR" "$UINST_SRCDIR" >>"$__uinst_config"
|
||||
|
@ -858,8 +868,11 @@ function __uinst_udir2s() {
|
|||
## Installer les profils
|
||||
if is_yes "$install_profiles"; then
|
||||
urequire uenv uenv_update
|
||||
etitle "Installation des profils" \
|
||||
uenv_install_profiles "$srcdir" "$profiledir" "$bashrcdir" "$defaultdir"
|
||||
etitle "Installation des profils"
|
||||
local local_profiles="$UINST_LOCAL_PROFILES"
|
||||
[ "$local_profiles" == auto ] && local_profiles=
|
||||
uenv_install_profiles ${local_profiles:+--local-profiles} "$srcdir" "$profiledir" "$bashrcdir" "$defaultdir"
|
||||
eend
|
||||
fi
|
||||
|
||||
## Déploiement
|
||||
|
|
6
nutools
6
nutools
|
@ -12,6 +12,8 @@ USAGE
|
|||
OPTIONS
|
||||
-C, --configure
|
||||
Faire la configuration pour l'utilisateur courant en appelant uenv -u
|
||||
Avec cette option, l'option -l (ou --local-profiles) est aussi reconnue
|
||||
et est passée directement à uenv
|
||||
-v, --version
|
||||
Afficher la version de nutools installée. C'est l'option par défaut
|
||||
-c, --check
|
||||
|
@ -33,10 +35,12 @@ OPTIONS
|
|||
}
|
||||
|
||||
action=show
|
||||
local_profiles=
|
||||
coper=
|
||||
args=(
|
||||
--help '$exit_with display_help'
|
||||
-C,--configure action=configure
|
||||
-l,--local-profiles local_profiles=1
|
||||
-v,--version action=show
|
||||
-c,--check action=check
|
||||
-o:,--oper:,--op: '$action=check; set@ coper'
|
||||
|
@ -53,7 +57,7 @@ parse_args "$@"; set -- "${args[@]}"
|
|||
|
||||
case "$action" in
|
||||
configure)
|
||||
"$scriptdir/uenv" -u
|
||||
"$scriptdir/uenv" -u ${local_profiles:+--local-profiles}
|
||||
;;
|
||||
show)
|
||||
setx nutoolsver="$scriptdir/pver" -F "$scriptdir/VERSION.txt" --show
|
||||
|
|
7
profile
7
profile
|
@ -1,8 +1,13 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
[ -f ~/.nutoolsrc ] && . ~/.nutoolsrc
|
||||
[ -z "$USER" -a -n "$LOGNAME" ] && export USER="$LOGNAME"
|
||||
|
||||
function uprovide() { :; }
|
||||
source @@dest@@/lib/ulib/uenv || return
|
||||
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.${HOSTNAME%%.*}.d"
|
||||
if [ -n "$UTOOLS_LOCAL_PROFILES" ]; then
|
||||
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.${HOSTNAME%%.*}.d"
|
||||
else
|
||||
__uenv_source_dirs @@dest@@/profile.d "$HOME/etc/profile.d"
|
||||
fi
|
||||
__uenv_cleanup
|
||||
|
|
19
uenv
19
uenv
|
@ -17,7 +17,7 @@ OPTIONS
|
|||
HOME=/path/to/homedir
|
||||
Spécifier le chemin vers ~
|
||||
Cette option doit être placée avant les valeurs projdirs.
|
||||
-u
|
||||
-u, --update
|
||||
Installer ou mettre à jour les fichiers de profil des projets spécifiés:
|
||||
Les fichiers ~/.profile, ~/.bash_profile et ~/.bashrc sont vérifiés et
|
||||
corriger automatiquement pour inclure les fichiers de nutools.
|
||||
|
@ -26,12 +26,23 @@ OPTIONS
|
|||
Les projets spécifiés *doivent* être configurés avec uinst -C, et
|
||||
définir la valeur install_profiles=true dans leur fichier .udir
|
||||
Si aucun projet n'est spécifié, prendre les fichiers de profil de
|
||||
nutools."
|
||||
nutools.
|
||||
-l, --local-profiles
|
||||
Avec l'option -u, installer les profils locaux comme tels. Pour les
|
||||
fichiers de profil qui sont indiqués comme non partagés, les copier dans
|
||||
des répertoires spécifiques de la forme {profile,bashrc}.HOSTNAME.d et
|
||||
default.HOSTNAME
|
||||
-s, --shared-profiles
|
||||
Installer les profils locaux comme des profils partagés. C'est l'option
|
||||
par défaut."
|
||||
}
|
||||
|
||||
local_profiles="$UTOOLS_LOCAL_PROFILES"
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
--help '$exit_with display_help' \
|
||||
-u update \
|
||||
-u,--update update=1 \
|
||||
-l,--local-profiles local_profiles=1 \
|
||||
-s,--shared-profiles local_profiles= \
|
||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||
|
||||
if [[ "$1" == HOME=* ]]; then
|
||||
|
@ -40,7 +51,7 @@ if [[ "$1" == HOME=* ]]; then
|
|||
shift
|
||||
fi
|
||||
|
||||
uenv_set_destdirs
|
||||
uenv_set_destdirs ${local_profiles:+--local-profiles}
|
||||
|
||||
if [ ! -d "$profiledestdir" -o ! -d "$bashrcdestdir" -o ! -d "$defaultdestdir" ]; then
|
||||
# forcer la maj si un des répertoires ~/etc/{profile.d,bashrc.d,default}
|
||||
|
|
Loading…
Reference in New Issue