diff --git a/CHANGES.md b/CHANGES.md index 7b47c2a..dd5ff1e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,11 @@ +## Release 0.6.1p74 du 03/06/2025-10:21 + +* `51ce95e` maj doc +* `be6b737` ajout file::try_ext +* `341a9ba` élargir la plage de remplacement + +## Release 0.6.0p82 du 30/05/2025-22:37 + ## Release 0.6.0p74 du 30/05/2025-22:35 29/05/2025 Renommer le répertoire de nulib à nulib-base et le package de nulib/php à nulib/base diff --git a/README.md b/README.md index ddd0939..642d838 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,28 @@ ## Release Exemple: release de la version 0.6.0 + +Ouvrir deux consoles +* console "74" avec le checkout de la version php7.4 +* console "82" avec le checkout de la version php8.2 + ~~~sh +## dans les deux consoles + version=0.6.0 -## branche dev74 +## console 74 + git checkout dev74 prel -v$version _merge82 -## branche dev82 +## console 82 + +pu + git checkout dev82 prel -C @@ -22,10 +33,19 @@ prel -C commit="$(git log --grep="Init changelog . version ${version}p82" --format=%H)" && echo "commit=$commit" +## console 74 + +# reprendre la valeur affichée par la précédente commande +commit=XXX + git checkout dev74 git cherry-pick "$commit" pp -a + +## console 82 + +pu ~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file diff --git a/VERSION.txt b/VERSION.txt index a918a2a..ee6cdce 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -0.6.0 +0.6.1 diff --git a/composer.json b/composer.json index 5a6a8da..ad4668a 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ } }, "replace": { - "nulib/php": "<0.6.0" + "nulib/php": "*" }, "require": { "symfony/yaml": "^5.0", @@ -44,8 +44,6 @@ "config": { "vendor-dir": "php/vendor" }, - "scripts": { - }, "authors": [ { "name": "Jephte Clain", diff --git a/php/src/file.php b/php/src/file.php index feaa12c..6bd1928 100644 --- a/php/src/file.php +++ b/php/src/file.php @@ -7,6 +7,7 @@ use nulib\file\MemoryStream; use nulib\file\SharedFile; use nulib\file\TempStream; use nulib\file\TmpfileWriter; +use nulib\os\path; /** * Class file: outils pour gérer les fichiers @@ -17,6 +18,34 @@ class file { return $file; } + /** + * si le fichier $file existe, le retourner. + * sinon, essayer avec l'une des extensions spécifiées, jusqu'à ce qu'un + * fichier soit trouvé. + * si aucun fichier n'est trouvé, retourner null + * + * par exemple, si le fichier "file.yaml" n'existe pas et que le fichier + * "file.yml" existe, alors file::try("file.yaml", ".yml") + * retourne "file.yml" + * + * par défaut, $replace_ext est initialisé à l'extension de $file. utiliser [] + * pour désactiver cette fonctionnalité + * + * @param string|array $exts + * @param string|array $replace_ext + */ + static function try_ext(string $file, $exts=null, $replace_ext=null): ?string { + if (file_exists($file)) return $file; + if ($exts !== null) { + $replace_ext ??= path::ext($file); + foreach (cl::with($exts) as $ext) { + $tmpfile = path::ensure_ext($file, $ext, $replace_ext); + if (file_exists($tmpfile)) return $tmpfile; + } + } + return null; + } + static function reader($input, ?callable $func=null): FileReader { $file = new FileReader(self::fix_dash($input)); if ($func !== null) {