Skip to content

feat: add lexists template function#762

Open
JamBalaya56562 wants to merge 1 commit into
nginx-proxy:mainfrom
JamBalaya56562:feat/187-lexists
Open

feat: add lexists template function#762
JamBalaya56562 wants to merge 1 commit into
nginx-proxy:mainfrom
JamBalaya56562:feat/187-lexists

Conversation

@JamBalaya56562

@JamBalaya56562 JamBalaya56562 commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a lexists template function — the os.Lstat counterpart of the existing exists.

exists is backed by os.Stat, which follows symlinks, so a symlink whose target is missing (a dangling link) reports as non-existent. lexists uses os.Lstat, which stats the link itself without following it, so it returns true for the symlink even when its target is unavailable. This is the behaviour requested in #187 (check for existence without traversing the symlink).

Change

  • internal/utils: add PathLExists, mirroring PathExists but using os.Lstat instead of os.Stat (same fs.ErrNotExist handling).
  • internal/template: register it in the template FuncMap as lexists, next to exists.
  • README.md: document lexists alongside exists.

Tests

TestPathLExists covers an existing file (true), a missing path (false), and — the distinguishing case — a dangling symlink, asserting lexists returns true while exists returns false. The symlink portion is skipped where symlink creation isn't permitted (e.g. Windows without the privilege).

Fixes #187

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add lexists function

1 participant