From 7be840f2cc9be70a40dd6ed3ca8c8592a4f29499 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 25 Apr 2024 17:46:14 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- bbnurse | 46 +++++++++++++------ nur_src/b/io/TmpfileWriter.php | 1 + nur_src/ref/ref_type.php | 3 +- src/cv.php | 9 ++++ src/{os => }/file.php | 14 +++--- src/{os => }/file/IReader.php | 2 +- src/{os => }/file/IWriter.php | 2 +- src/{os => }/file/_IFile.php | 2 +- src/{os/file => file/base}/FileReader.php | 4 +- src/{os/file => file/base}/FileWriter.php | 3 +- src/{os/file => file/base}/MemoryStream.php | 4 +- src/{os/file => file/base}/SharedFile.php | 2 +- src/{os/file => file/base}/Stream.php | 6 ++- src/{os/file => file/base}/TStreamFilter.php | 11 +++-- src/{os/file => file/base}/TempStream.php | 2 +- src/{os/file => file/base}/TmpfileWriter.php | 3 +- src/{os/file => file/base}/_File.php | 2 +- src/{os => file}/csv/csv_flavours.php | 8 ++-- src/output/std/StdOutput.php | 2 +- src/str.php | 2 - .../{os/file => file/base}/FileReaderTest.php | 15 +++--- .../{os/file => file/base}/impl/avec_bom.csv | 0 .../{os/file => file/base}/impl/avec_bom.txt | 0 tests/{os/file => file/base}/impl/msexcel.csv | 0 tests/{os/file => file/base}/impl/ooffice.csv | 0 .../{os/file => file/base}/impl/sans_bom.txt | 0 tests/{os/file => file/base}/impl/weird.tsv | 0 tests/php/time/DateTest.php | 2 +- tests/php/time/DateTimeTest.php | 2 +- tests/php/time/DelayTest.php | 4 +- 30 files changed, 86 insertions(+), 65 deletions(-) rename src/{os => }/file.php (86%) rename src/{os => }/file/IReader.php (98%) rename src/{os => }/file/IWriter.php (97%) rename src/{os => }/file/_IFile.php (98%) rename src/{os/file => file/base}/FileReader.php (95%) rename src/{os/file => file/base}/FileWriter.php (93%) rename src/{os/file => file/base}/MemoryStream.php (89%) rename src/{os/file => file/base}/SharedFile.php (92%) rename src/{os/file => file/base}/Stream.php (99%) rename src/{os/file => file/base}/TStreamFilter.php (80%) rename src/{os/file => file/base}/TempStream.php (96%) rename src/{os/file => file/base}/TmpfileWriter.php (98%) rename src/{os/file => file/base}/_File.php (97%) rename src/{os => file}/csv/csv_flavours.php (90%) rename tests/{os/file => file/base}/FileReaderTest.php (81%) rename tests/{os/file => file/base}/impl/avec_bom.csv (100%) rename tests/{os/file => file/base}/impl/avec_bom.txt (100%) rename tests/{os/file => file/base}/impl/msexcel.csv (100%) rename tests/{os/file => file/base}/impl/ooffice.csv (100%) rename tests/{os/file => file/base}/impl/sans_bom.txt (100%) rename tests/{os/file => file/base}/impl/weird.tsv (100%) 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 {