Skip to content

feat(flow-php/filesystem): exclusive create, local permissions, non-recursive rm - #2711

Merged
norberttech merged 1 commit into
1.xfrom
filesystem-primitives
Oct 30, 2026
Merged

norberttech merged 1 commit into
1.xfrom
filesystem-primitives

Conversation

@norberttech

Copy link
Copy Markdown
Member

Resolves: #xxx

Change Log


Added

  • flow-php/filesystem - Filesystem::create() exclusive create, visible at close, throws FileExistsException
  • flow-php/filesystem - Local\Permissions for local files, directories and block files
  • flow-php/filesystem-async-aws-bridge - exclusive create() with If-None-Match
  • flow-php/filesystem-azure-bridge - exclusive create() with If-None-Match
  • flow-php/azure-sdk - withIfNoneMatch() on block blob put options

Fixed

  • flow-php/filesystem - mv() warning and leftover directory on a missing source
  • flow-php/filesystem-azure-bridge - empty blob visible before close() on multi-block writes
  • flow-php/filesystem-async-aws-bridge - stray key on an empty append
  • flow-php/azure-sdk - deleteContainer() missing restype=container

Changed

  • flow-php/filesystem - rm() takes $recursive, false refuses a non-empty directory
  • flow-php/filesystem - mv() replaces files atomically instead of delete then rename

Removed

Deprecated

Security

…ecursive rm

- Filesystem::create() makes a file visible whole at close() and throws FileExistsException when the path exists
- S3 and Azure create() commit with If-None-Match; an S3 conflicting write aborts and asks to create again; SFTP and StdOut refuse it
- Local\Permissions for files and directories on NativeLocalFilesystem and the block factory
- rm() takes $recursive; false refuses a non-empty directory
- mv() no longer warns or leaves a directory for a missing source, and replaces files atomically
- fixed Azure blocks visible before close(), azure-sdk deleteContainer(), and a stray S3 key on empty append
@norberttech norberttech added this to the 0.47.0 milestone Oct 30, 2026
@codecov

codecov Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.02888% with 11 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.44%. Comparing base (87b115f) to head (8a68322).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                1.x    #2711      +/-   ##
============================================
+ Coverage     90.40%   90.44%   +0.04%     
- Complexity        0    30909   +30909     
============================================
  Files          2174     2175       +1     
  Lines         89093    89259     +166     
============================================
+ Hits          80543    80729     +186     
+ Misses         8550     8530      -20     
Components Coverage Δ
etl 95.81% <ø> (ø)
cli 87.05% <ø> (ø)
lib-array-dot 96.52% <ø> (ø)
lib-azure-sdk 64.17% <100.00%> (+0.33%) ⬆️
lib-doctrine-dbal-bulk 94.24% <ø> (ø)
lib-filesystem 88.96% <95.38%> (+0.86%) ⬆️
lib-types 94.60% <ø> (ø)
lib-parquet 82.68% <ø> (ø)
lib-parquet-viewer 83.15% <ø> (ø)
lib-snappy 89.86% <ø> (ø)
lib-dremel 0.00% <ø> (ø)
lib-postgresql 89.44% <ø> (ø)
lib-telemetry 86.85% <ø> (ø)
bridge-filesystem-async-aws 96.12% <96.55%> (+2.42%) ⬆️
bridge-filesystem-azure 94.39% <95.00%> (+0.21%) ⬆️
bridge-filesystem-sftp 89.80% <100.00%> (+0.35%) ⬆️
bridge-monolog-http 96.84% <ø> (ø)
bridge-monolog-telemetry 94.79% <ø> (ø)
bridge-openapi-specification 91.95% <ø> (ø)
symfony-http-foundation 80.76% <ø> (ø)
bridge-psr18-telemetry 100.00% <ø> (ø)
bridge-psr3-telemetry 98.95% <ø> (ø)
bridge-psr7-telemetry 100.00% <ø> (ø)
bridge-telemetry-otlp 90.11% <ø> (ø)
bridge-symfony-http-foundation-telemetry 92.85% <ø> (ø)
bridge-symfony-filesystem-bundle 90.72% <ø> (ø)
bridge-symfony-filesystem-cache 98.18% <ø> (ø)
bridge-symfony-postgresql-bundle 93.35% <ø> (ø)
bridge-symfony-postgresql-cache 94.41% <ø> (ø)
bridge-symfony-postgresql-messenger 98.80% <ø> (ø)
bridge-symfony-postgresql-session 93.65% <ø> (ø)
bridge-symfony-telemetry-bundle 90.77% <ø> (ø)
adapter-chartjs 82.11% <ø> (ø)
adapter-csv 97.61% <ø> (ø)
adapter-doctrine 95.13% <ø> (ø)
adapter-google-sheet 97.40% <ø> (ø)
adapter-http 87.18% <ø> (ø)
adapter-json 90.30% <ø> (ø)
adapter-logger 47.05% <ø> (ø)
adapter-parquet 96.28% <ø> (ø)
adapter-text 97.70% <ø> (ø)
adapter-xml 98.01% <ø> (ø)
adapter-avro 6.25% <ø> (ø)
adapter-excel 97.11% <ø> (ø)
adapter-postgresql 97.34% <ø> (ø)
adapter-seal 89.91% <ø> (ø)
bridge-phpunit-postgresql 75.30% <ø> (ø)
bridge-phpunit-telemetry 87.36% <ø> (ø)
bridge-phpstan-types 0.00% <ø> (ø)
bridge-postgresql-valinor 100.00% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@norberttech
norberttech merged commit d9ae015 into 1.x Oct 30, 2026
21 checks passed
@norberttech
norberttech deleted the filesystem-primitives branch October 30, 2026 23:05
@github-project-automation github-project-automation Bot moved this from Todo to Done in Roadmap Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant