diff --git a/cx-updatedev b/cx-updatedev index 4200657..b43f4c6 100755 --- a/cx-updatedev +++ b/cx-updatedev @@ -27,7 +27,10 @@ OPTIONS Supprimer les répertoires et les faire recréer par composer i, uniquement s'il s'agit de liens -u, --update - Supprimer les répertoires et les faire recréer par composer u" + Supprimer les répertoires et les faire recréer par composer u + --ru, --recursive-update + Mettre à jour de façon récursive tous les projets dépendants. + NB: les modifications seront automatiquement enregistrées dans git." } fake= @@ -35,6 +38,7 @@ verbose=1 action= args=( --help '$exit_with display_help' + -d:,--project-dir: projdir= -n,--fake fake=1 -q,--quiet verbose= -l,--link action=link @@ -42,9 +46,16 @@ args=( -i,--install action=install -j,--reinstall-link action=reinstall-link -u,--update action=update + --ru,--recursive-update action=recursive-update ) parse_args "$@"; set -- "${args[@]}" +if [ -d "$projdir" ]; then + cd "$projdir" +elif [ -e "$projdir" ]; then + die "$projdir: répertoire introuvable" +fi + found= first=1 while true; do @@ -63,10 +74,14 @@ if [ -z "$first" ]; then fi case "$action" in -install|update) +install|update|reinstall-link|recursive-update) [ -x ./composer.phar ] || die "Impossible de trouver composer.phar" ;; esac +if [ "$action" == recursive-update ]; then + # avec recursive-update, tous les modules doivent être considérés + set -- +fi ### @@ -91,6 +106,7 @@ function update_with_rsync() { } deps=() +modules=() for m in "$@"; do m="${m#vendor/}" # pour permettre de spécifier le chemin directement m="${m//\//-}" @@ -98,6 +114,7 @@ for m in "$@"; do ur-*|lib-*) ;; *) m="ur-$m";; esac + modules+=("$m") p="${m//-/\/}" check_module @@ -143,7 +160,7 @@ for m in "$@"; do array_add deps "$p" eend ;; - reinstall-link) + reinstall-link|recursive-update) # Supprimer les liens uniquement... etitle "$m" if [ -L "vendor/$p" ]; then @@ -187,4 +204,17 @@ update) ./composer.phar u "${deps[@]}" eend ;; +recursive-update) + # mettre à jour les dépendances de façon récursives + for m in "${modules[@]}"; do + etitle "Mise à jour récursive: $m" + "$script" -d "../$m" --ru + eend + done + estep "Maj deps" + ./composer.phar u + + estep "Enregistrement dans git" + pci -A "maj deps" + ;; esac