From f7aa6445850b445403cde8de82aa46bd830c8e79 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 16 Aug 2026 14:38:44 +0200 Subject: [PATCH 1/2] verify if a path is a link before if it is a directory --- CHANGELOG.md | 6 ++++++ src/Internal/Capabilities/Files/AmbientAuthority.php | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 110ef8c..a6a8a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased] + +### Changed + +- Verify if paths are links before there are directories (as a link can represent a directory) + ## 4.1.2 - 2026-08-01 ### Changed diff --git a/src/Internal/Capabilities/Files/AmbientAuthority.php b/src/Internal/Capabilities/Files/AmbientAuthority.php index 3208845..aabd56a 100644 --- a/src/Internal/Capabilities/Files/AmbientAuthority.php +++ b/src/Internal/Capabilities/Files/AmbientAuthority.php @@ -87,8 +87,8 @@ public function list(Path $path): Sequence yield Name::of( $name, match (true) { - $file->isDir() => Kind::directory, $file->isLink() => Kind::link, + $file->isDir() => Kind::directory, default => Kind::file, }, ); @@ -117,8 +117,8 @@ public function kind(Path $path): Attempt } return Attempt::result(match (true) { - \is_dir($path) => Kind::directory, \is_link($path) => Kind::link, + \is_dir($path) => Kind::directory, default => Kind::file, }); } From 6811f1941d225e18860ed828a2ab352303e57362 Mon Sep 17 00:00:00 2001 From: Baptiste Langlade Date: Sun, 16 Aug 2026 14:51:02 +0200 Subject: [PATCH 2/2] fix deleting links pointing to directories --- CHANGELOG.md | 4 ++++ src/Internal/Capabilities/Files/AmbientAuthority.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6a8a26..290eac5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - Verify if paths are links before there are directories (as a link can represent a directory) +### Fixed + +- Deleting a link pointing to a directory now delete the link instead of the directory content + ## 4.1.2 - 2026-08-01 ### Changed diff --git a/src/Internal/Capabilities/Files/AmbientAuthority.php b/src/Internal/Capabilities/Files/AmbientAuthority.php index aabd56a..6824a94 100644 --- a/src/Internal/Capabilities/Files/AmbientAuthority.php +++ b/src/Internal/Capabilities/Files/AmbientAuthority.php @@ -152,6 +152,10 @@ public function remove(Path $path): Attempt return Attempt::result(SideEffect::identity); } + if (\is_link($path->toString())) { + return $this->unlink($path->toString()); + } + if ($path->directory() && \is_dir($path->toString())) { return $this->rmdir($path->toString()); }