#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 #source /etc/nulib.sh || exit 1 source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1 function copy_nurse() { : } function copy_mature() { local libname libdir path filename class local srcdir srcpath srcpackage local destdir destpath destpackage local src="$1"; shift [ -n "$src" ] || die "vous devez spécifier le fichier ou le package arrivant à maturation" if [ -f "$src" ]; then # fichier setx src=abspath "$src" [ "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/" src="${src#$MYDIR/src/}" path="${src%/*}" filename="${src##*/}" class="${filename%.php}" elif [ -d "$src" ]; then # répertoire de package setx src=abspath "$src" [ "$src" == "$MYDIR/src" -o "${src#$MYDIR/src/}" != "$src" ] || die "la source doit être dans nur-sery/src/" srcdir="$src" path="${src#$MYDIR/src}"; path="${path#/}" else # package src="${src//\\\\/\/}" src="${src%/}" [ -d "$MYDIR/src/$src" ] || die "la source doit être un package de nur-sery" srcdir="$MYDIR/src/$src" path="$src" fi if [ -n "$path" ]; then srcpackage="nur/sery/$path"; srcpackage="${srcpackage//\//\\}" destpackage="nulib/$path"; destpackage="${destpackage//\//\\}" else srcpackage='nur\sery' destpackage='nulib' fi local dest="${1:-.}"; shift setx dest=abspath "$dest" if [[ "$dest" == */nulib ]]; then libname=nulib libdir="$dest" elif [[ "$dest" == */nulib/* ]]; then libname=nulib libdir="${dest%%/nulib/*}/nulib" else die "seul la maturation vers nulib est supporté" fi case "$libname" in nulib) if [ -n "$path" ]; then destdir="$libdir/php/src_${path%%/*}" else destdir="$libdir/php/src_base" fi if [ -n "$class" ]; then # Maturation d'un seul fichier die "TODO" else # Maturation de toute un package pwd #XXX einfo "$srcdir --> $destdir" einfo "Maturation de $srcpackage vers $destpackage" setx -a srcs=find "$srcdir" -type f for src in "${srcs[@]}"; do srcname="${src#$srcdir/}" dest="$destdir/$srcname" estep "${src#$srcdir/}" mkdirof "$dest" sed "s|${srcpackage//\\/\\\\}|${destpackage//\\/\\\\}|g" <"$src" >"$dest" done fi ;; esac } function update_nurse() { : } function update_mature() { : } action=update evolution=mature args=( "Gérer la maturation d'une classe ou d'un package" " -cn SRC -cm SRC [DEST] -u[n|m] package|Class [DEST] Il y a deux types d'évolutions possibles: * mettre en nurserie * arriver à maturation Pour chaque type d'évolution, il y a deux actions possibles: * copier (-c) * mettre en nurserie (-cn) consiste à copier (importer) un fichier PHP ou un package depuis un projet nulib-* * SRC est le fichier ou le package du projet nulib-* * arriver à maturation (-cm) consiste à copier (exporter) le fichier PHP ou le package vers un projet nulib-* * SRC est le fichier ou le package * DEST est le répertoire du projet nulib-* ou le répertoire courant sinon * mettre à jour (-u) * mettre en nurserie (-un) met à jour les sources d'un projet pour utiliser la version de nur/sery * arriver à maturation (-um) met à jour les sources d'un projet pour utiliser la version mature à maturation L'argument est un 'package' ou un 'sous\\package' (dont le nom commence par une minuscule) ou une 'Classe' (dont le nom commence par une majuscule)" -c,--copy action=copy "Copier de/vers un projet nulib-*" -u,--update action=update "Mettre à jour un projet. C'est l'option par défaut" -i,-n,--nurse evolution=nurse "Mettre en nurserie" -x,-m,--mature evolution=mature "Arriver à maturation. C'est l'option par défaut" ) parse_args "$@"; set -- "${args[@]}" "${action}_${evolution}" "$@"