#[cfg(not(any(target_pointer_width = "32", target_pointer_width = "64")))] compile_error!("Unexpected pointer width for target platform"); use alloc::{ string::{String, ToString}, vec::Vec, }; use core::str::FromStr; use crate::{ os::{Os, Target}, CpuArchitecture, DesktopEnvironment, Language, LanguagePreferences, OsString, Platform, Result, }; impl Target for Os { fn lang_prefs(self) -> Result { let langs = wasite::environment().user.langs; let fallbacks = langs .other() .map(Language::from_str) .collect::>>()?; let collation = langs .collation() .next() .map(Language::from_str) .transpose()?; let char_classes = langs .char_class() .next() .map(Language::from_str) .transpose()?; let monetary = langs .monetary() .next() .map(Language::from_str) .transpose()?; let messages = langs.message().next().map(Language::from_str).transpose()?; let numeric = langs.numeric().next().map(Language::from_str).transpose()?; let time = langs.time().next().map(Language::from_str).transpose()?; Ok(LanguagePreferences { fallbacks, collation, char_classes, monetary, messages, numeric, time, }) } #[inline(always)] fn realname(self) -> Result { self.username() } #[inline(always)] fn username(self) -> Result { Ok(wasite::environment().user.username.into()) } #[inline(always)] fn devicename(self) -> Result { Ok(wasite::environment().host.name.into()) } #[inline(always)] fn hostname(self) -> Result { Ok(wasite::environment().host.hostname) } #[inline(always)] fn distro(self) -> Result { Ok("Unknown WASI".to_string()) } #[inline(always)] fn desktop_env(self) -> Option { Some(DesktopEnvironment::Unknown("Nucleic".to_string())) } #[inline(always)] fn platform(self) -> Platform { Platform::Unknown("WASI".to_string()) } #[inline(always)] fn arch(self) -> Result { Ok(if cfg!(target_pointer_width = "64") { CpuArchitecture::Wasm64 } else { CpuArchitecture::Wasm32 }) } }