aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-external-packages/src/symfony/console/output
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-25 03:20:08 +0900
committernsfisis <nsfisis@gmail.com>2026-06-25 03:33:09 +0900
commitc65cab710bb3d79db20862c9361d4dbbac8ac5d7 (patch)
treeb4d192237bbb8dbaa80166f1ffa24703e57243f4 /crates/shirabe-external-packages/src/symfony/console/output
parentf73e9ab05f8d94937d2437919199d9d9681c8cde (diff)
downloadphp-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.rs5
-rw-r--r--crates/shirabe-external-packages/src/symfony/console/output/stream_output.rs19
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()