diff --git a/bbnurse b/bbnurse index 3da8cff..07078a9 100755 --- a/bbnurse +++ b/bbnurse @@ -1,7 +1,7 @@ #!/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 +source /etc/nulib.sh || exit 1 +#source "$(dirname -- "$0")/vendor/nulib/php/load.sh" || exit 1 function copy_nurse() { : @@ -20,9 +20,16 @@ function copy_mature() { 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##*/}" + if [[ "$src" == */* ]]; then + path="${src%/*}" + filename="${src##*/}" + else + path= + filename="$src" + fi class="${filename%.php}" + srcdir="$MYDIR/src" + src="$srcdir/$src" elif [ -d "$src" ]; then # répertoire de package setx src=abspath "$src" @@ -48,14 +55,13 @@ function copy_mature() { destpackage='nulib' fi - local dest="${1:-.}"; shift - setx dest=abspath "$dest" - if [[ "$dest" == */nulib ]]; then + setx Dest=abspath "$Dest" + if [[ "$Dest" == */nulib ]]; then libname=nulib - libdir="$dest" - elif [[ "$dest" == */nulib/* ]]; then + libdir="$Dest" + elif [[ "$Dest" == */nulib/* ]]; then libname=nulib - libdir="${dest%%/nulib/*}/nulib" + libdir="${Dest%%/nulib/*}/nulib" else die "seul la maturation vers nulib est supporté" fi @@ -75,7 +81,12 @@ function copy_mature() { if [ -n "$class" ]; then # Maturation d'un seul fichier - die "TODO" + etitle "Maturation de $srcpackage vers $destpackage" + srcname="${src#$srcdir/}" + dest="$destdir/$srcname" + estep "$srcname" + mkdirof "$dest" + sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest" else # Maturation de toute un package etitle "Maturation de $srcpackage vers $destpackage" @@ -84,7 +95,7 @@ function copy_mature() { for src in "${srcs[@]}"; do srcname="${src#$srcdir/}" dest="$destdir/$srcname" - estep "${src#$srcdir/}" + estep "$srcname" mkdirof "$dest" sed "s|${nurserypackage//\\/\\\\}|${nulibpackage//\\/\\\\}|g" <"$src" >"$dest" done @@ -113,14 +124,17 @@ function update_mature() { : } -action=update +action=copy evolution=mature +Dest= args=( "Gérer la maturation d'une classe ou d'un package" " +-cm SRC [-d DEST] -cn SRC --cm SRC [DEST] --u[n|m] package|Class [DEST] +-u[n|m] package|Class [-d DEST] + +IMPORTANT: pour l'instant, seule la copie à maturation (-cm) est implémentée Il y a deux types d'évolutions possibles: * mettre en nurserie (-n) @@ -142,6 +156,7 @@ Pour chaque type d'évolution, il y a deux actions possibles: 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)" + -d:,--dest Dest= "Spécifier la destination" -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" @@ -149,4 +164,5 @@ Pour chaque type d'évolution, il y a deux actions possibles: ) parse_args "$@"; set -- "${args[@]}" +[ -n "$Dest" ] || Dest=. "${action}_${evolution}" "$@" diff --git a/nur_src/b/io/TmpfileWriter.php b/nur_src/b/io/TmpfileWriter.php index ff02e6b..d24588d 100644 --- a/nur_src/b/io/TmpfileWriter.php +++ b/nur_src/b/io/TmpfileWriter.php @@ -1,6 +1,7 @@ filters, [$filterName, $readWrite, $params]); + $this->filters[] = [$filterName, $readWrite, $params]; } function prependFilter(string $filterName, ?int $readWrite=null, $params=null): void { - A::prepend($this->filters, [$filterName, $readWrite, $params]); + if ($this->filters === null) $this->filters = []; + array_unshift($this->filters, [$filterName, $readWrite, $params]); } function setEncodingFilter(string $from, string $to): void { diff --git a/src/os/file/TempStream.php b/src/file/base/TempStream.php similarity index 96% rename from src/os/file/TempStream.php rename to src/file/base/TempStream.php index 60ef9c6..bb1f1dd 100644 --- a/src/os/file/TempStream.php +++ b/src/file/base/TempStream.php @@ -1,5 +1,5 @@ fread(10)); self::assertSame(10, $reader->ftell()); $reader->seek(30); @@ -20,7 +21,7 @@ class FileReaderTest extends TestCase { self::assertSame("0123456789\n", $reader->getContents()); $reader->close(); ## avec BOM - $reader = new FileReader(__DIR__.'/impl/avec_bom.txt'); + $reader = new FileReader(__DIR__ . '/impl/avec_bom.txt'); self::assertSame("0123456789", $reader->fread(10)); self::assertSame(10, $reader->ftell()); $reader->seek(30); @@ -35,25 +36,25 @@ class FileReaderTest extends TestCase { } function testCsvAutoParams() { - $reader = new FileReader(__DIR__.'/impl/msexcel.csv'); + $reader = new FileReader(__DIR__ . '/impl/msexcel.csv'); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertNull($reader->fgetcsv()); $reader->close(); - $reader = new FileReader(__DIR__.'/impl/ooffice.csv'); + $reader = new FileReader(__DIR__ . '/impl/ooffice.csv'); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertNull($reader->fgetcsv()); $reader->close(); - $reader = new FileReader(__DIR__.'/impl/weird.tsv'); + $reader = new FileReader(__DIR__ . '/impl/weird.tsv'); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertNull($reader->fgetcsv()); $reader->close(); - $reader = new FileReader(__DIR__.'/impl/avec_bom.csv'); + $reader = new FileReader(__DIR__ . '/impl/avec_bom.csv'); self::assertSame(["nom", "prenom", "age"], $reader->fgetcsv()); self::assertSame(["clain", "jephte", "50"], $reader->fgetcsv()); self::assertNull($reader->fgetcsv()); diff --git a/tests/os/file/impl/avec_bom.csv b/tests/file/base/impl/avec_bom.csv similarity index 100% rename from tests/os/file/impl/avec_bom.csv rename to tests/file/base/impl/avec_bom.csv diff --git a/tests/os/file/impl/avec_bom.txt b/tests/file/base/impl/avec_bom.txt similarity index 100% rename from tests/os/file/impl/avec_bom.txt rename to tests/file/base/impl/avec_bom.txt diff --git a/tests/os/file/impl/msexcel.csv b/tests/file/base/impl/msexcel.csv similarity index 100% rename from tests/os/file/impl/msexcel.csv rename to tests/file/base/impl/msexcel.csv diff --git a/tests/os/file/impl/ooffice.csv b/tests/file/base/impl/ooffice.csv similarity index 100% rename from tests/os/file/impl/ooffice.csv rename to tests/file/base/impl/ooffice.csv diff --git a/tests/os/file/impl/sans_bom.txt b/tests/file/base/impl/sans_bom.txt similarity index 100% rename from tests/os/file/impl/sans_bom.txt rename to tests/file/base/impl/sans_bom.txt diff --git a/tests/os/file/impl/weird.tsv b/tests/file/base/impl/weird.tsv similarity index 100% rename from tests/os/file/impl/weird.tsv rename to tests/file/base/impl/weird.tsv diff --git a/tests/php/time/DateTest.php b/tests/php/time/DateTest.php index d77676e..7f3458a 100644 --- a/tests/php/time/DateTest.php +++ b/tests/php/time/DateTest.php @@ -2,7 +2,7 @@ namespace nur\sery\php\time; use DateTimeZone; -use PHPUnit\Framework\TestCase; +use nulib\tests\TestCase; class DateTest extends TestCase { protected static function dt(string $datetime): Date { diff --git a/tests/php/time/DateTimeTest.php b/tests/php/time/DateTimeTest.php index 7e004ca..00455f1 100644 --- a/tests/php/time/DateTimeTest.php +++ b/tests/php/time/DateTimeTest.php @@ -2,7 +2,7 @@ namespace nur\sery\php\time; use DateTimeZone; -use PHPUnit\Framework\TestCase; +use nulib\tests\TestCase; class DateTimeTest extends TestCase { protected static function dt(string $datetime): DateTime { diff --git a/tests/php/time/DelayTest.php b/tests/php/time/DelayTest.php index f2fc5cf..55cb054 100644 --- a/tests/php/time/DelayTest.php +++ b/tests/php/time/DelayTest.php @@ -2,9 +2,7 @@ namespace nur\sery\php\time; use DateTimeZone; -use nur\sery\php\time\DateTime; -use nur\sery\php\time\Delay; -use nur\t\TestCase; +use nulib\tests\TestCase; class DelayTest extends TestCase { protected static function dt(string $datetime): DateTime {