diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-25 03:20:08 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-25 03:33:09 +0900 |
| commit | c65cab710bb3d79db20862c9361d4dbbac8ac5d7 (patch) | |
| tree | b4d192237bbb8dbaa80166f1ffa24703e57243f4 /crates/shirabe-external-packages/src/symfony/console/output | |
| parent | f73e9ab05f8d94937d2437919199d9d9681c8cde (diff) | |
| download | php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.tar.gz php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.tar.zst php-shirabe-c65cab710bb3d79db20862c9361d4dbbac8ac5d7.zip | |
feat(php-shim): model $_ENV/$_SERVER as OsString snapshots
Rework the environment shim around getenv/putenv on the real environment
and $_ENV/$_SERVER as startup snapshots, all over OsString. Migrate every
caller off the old server()/server_argv() helpers and force the snapshots
in main() before any putenv() runs. Document the porting rules in
docs/dev/env-vars-porting.md.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe-external-packages/src/symfony/console/output')
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/output/console_output.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs | 19 |
2 files changed, 18 insertions, 6 deletions
diff --git a/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs index dd6840d..254ec2c 100644 --- a/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs +++ b/crates/shirabe-external-packages/src/symfony/console/output/console_output.rs @@ -103,7 +103,10 @@ impl ConsoleOutput { } else { String::new() }, - shirabe_php_shim::getenv("OSTYPE").unwrap_or_default(), + shirabe_php_shim::getenv("OSTYPE") + .unwrap_or_default() + .to_string_lossy() + .into_owned(), shirabe_php_shim::PHP_OS.to_string(), ]; diff --git a/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs b/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs index f517cbe..ac85f3a 100644 --- a/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs +++ b/crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs @@ -91,7 +91,9 @@ impl StreamOutput { if !shirabe_php_shim::stream_isatty_resource(stream) && !["MINGW32", "MINGW64"].contains( &shirabe_php_shim::strtoupper( - &shirabe_php_shim::getenv("MSYSTEM").unwrap_or_default(), + &shirabe_php_shim::getenv("MSYSTEM") + .unwrap_or_default() + .to_string_lossy(), ) .as_str(), ) @@ -105,15 +107,19 @@ impl StreamOutput { return true; } - if Some("Hyper".to_string()) == shirabe_php_shim::getenv("TERM_PROGRAM") + if shirabe_php_shim::getenv("TERM_PROGRAM").as_deref() + == Some(std::ffi::OsStr::new("Hyper")) || shirabe_php_shim::getenv("COLORTERM").is_some() || shirabe_php_shim::getenv("ANSICON").is_some() - || Some("ON".to_string()) == shirabe_php_shim::getenv("ConEmuANSI") + || shirabe_php_shim::getenv("ConEmuANSI").as_deref() == Some(std::ffi::OsStr::new("ON")) { return true; } - let term = shirabe_php_shim::getenv("TERM").unwrap_or_default(); + let term = shirabe_php_shim::getenv("TERM") + .unwrap_or_default() + .to_string_lossy() + .into_owned(); if "dumb" == term { return false; } @@ -130,7 +136,10 @@ impl StreamOutput { /// PHP: `(($_SERVER['NO_COLOR'] ?? getenv('NO_COLOR'))[0] ?? '')`. fn no_color_first_char() -> String { - let value = shirabe_php_shim::getenv("NO_COLOR").unwrap_or_default(); + let value = shirabe_php_shim::getenv("NO_COLOR") + .unwrap_or_default() + .to_string_lossy() + .into_owned(); value .chars() .next() |
