feat(adds-on): add caching for plugin discovery#27
Merged
Conversation
This pull request adds a caching mechanism to improve the performance of plugin discovery by storing discovered plugins for a configurable time-to-live period. The main changes introduce cache reading, writing, and validation logic. **Plugin cache implementation:** * Added a constant `CACHE_TTL_SECS` set to 60 seconds to control cache expiration time. * Implemented `plugin_cache_path()` function to determine the cache file location at `~/.cache/uv-shell/plugins` (or `$XDG_CACHE_HOME/uv-shell/plugins`), respecting XDG Base Directory specification. * Added `read_plugin_cache()` function to read cached plugin list, validating that the cache is fresh (within TTL) and that the PATH environment variable hasn't changed since the cache was written. * Implemented `write_plugin_cache()` function to persist discovered plugins along with a timestamp and current PATH snapshot for validation on subsequent reads. **Plugin discovery optimization:** * Updated `discover_plugins()` function to check for cached results first, falling back to full PATH scanning only when cache is invalid or missing. * Cache automatically invalidates when PATH changes or after the TTL expires, ensuring accuracy while improving performance for repeated invocations.
benbenbang
enabled auto-merge (squash)
March 28, 2026 10:41
|
🎉 This PR is included in version 2.6.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request adds a caching mechanism to improve the performance of plugin discovery by storing discovered plugins for a configurable time-to-live period. The main changes introduce cache reading, writing, and validation logic.
Plugin cache implementation:
CACHE_TTL_SECSset to 60 seconds to control cache expiration time.plugin_cache_path()function to determine the cache file location at~/.cache/uv-shell/plugins(or$XDG_CACHE_HOME/uv-shell/plugins), respecting XDG Base Directory specification.read_plugin_cache()function to read cached plugin list, validating that the cache is fresh (within TTL) and that the PATH environment variable hasn't changed since the cache was written.write_plugin_cache()function to persist discovered plugins along with a timestamp and current PATH snapshot for validation on subsequent reads.Plugin discovery optimization:
discover_plugins()function to check for cached results first, falling back to full PATH scanning only when cache is invalid or missing.