You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: address second-round CodeRabbit review on PR #6
- network: scope remote_cache filename per target triple so a shared
PVM_DIR (NFS, dotfile sync) cannot serve linux-x86_64 entries to an
aarch64 host
- use_cmd, install: remove unsafe std::env::set_var of PATH and
PVM_MULTISHELL_PATH; the wrapper sources env_file into the parent
shell on exit, and set_var is unsound under the multi-threaded tokio
runtime
- ls_remote: hoist 'prefix.' allocation outside retain so the predicate
does not reallocate per element
- docs: fix GEMINI.md PVM_DIR default for macOS, env file naming, and
the data-integrity guideline to point at std::fs::File locking
(fs4 was dropped in an earlier commit)
Copy file name to clipboardExpand all lines: GEMINI.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,11 +13,11 @@ When running `git commit -m "..."` in the shell (like Zsh/Bash), backticks are i
13
13
14
14
## Project Architecture (The Map)
15
15
### Filesystem Hierarchy
16
-
-**$PVM_DIR**: Root directory, defaults to `~/.local/share/pvm` on Linux/macOS.
16
+
-**$PVM_DIR**: Root directory. Resolved via `dirs::data_local_dir()`, so defaults to `~/.local/share/pvm` on Linux and `~/Library/Application Support/pvm` on macOS.
17
17
-**$PVM_DIR/versions/<version>**: Installation directory for specific PHP versions.
18
18
-**$PVM_DIR/bin/pvm**: The `pvm` binary itself.
19
-
-**$PVM_DIR/remote_cache.json**: 24-hour cache for remote version data.
20
-
-**$PVM_DIR/.env**: The generated file containing active version exports.
19
+
-**$PVM_DIR/remote_cache-<target-triple>.json**: 24-hour cache for the remote version index, scoped per target triple (e.g. `linux-x86_64`).
20
+
-**$PVM_DIR/.env_update[_<shell-pid>]**: Short-lived files written per shell invocation; the shell wrapper sources them to mutate the parent shell's environment.
21
21
22
22
### Module Responsibilities
23
23
-`src/cli.rs`: Command definitions using `clap`.
@@ -46,7 +46,7 @@ When running `git commit -m "..."` in the shell (like Zsh/Bash), backticks are i
46
46
-**Interactivity:** Use `dialoguer` for menus and confirmations.
47
47
-**Icons:** Use `colored` for status icons: `✓` (green), `✗` (red), `↻` (blue), `💡` (yellow).
48
48
-**Async:** Use `tokio` for runtime and `reqwest` for all network I/O.
49
-
-**Data Integrity:** Use `fs4` file locking when writing to `.env`or `remote_cache.json`.
49
+
-**Data Integrity:** Use file locking (`std::fs::File::lock` / `lock_shared` / `unlock`, stable since Rust 1.89) when writing to env update files or the remote cache.
0 commit comments