99 lines
2.5 KiB
Rust
99 lines
2.5 KiB
Rust
#[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<LanguagePreferences> {
|
|
let langs = wasite::environment().user.langs;
|
|
let fallbacks = langs
|
|
.other()
|
|
.map(Language::from_str)
|
|
.collect::<Result<Vec<Language>>>()?;
|
|
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<OsString> {
|
|
self.username()
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn username(self) -> Result<OsString> {
|
|
Ok(wasite::environment().user.username.into())
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn devicename(self) -> Result<OsString> {
|
|
Ok(wasite::environment().host.name.into())
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn hostname(self) -> Result<String> {
|
|
Ok(wasite::environment().host.hostname)
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn distro(self) -> Result<String> {
|
|
Ok("Unknown WASI".to_string())
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn desktop_env(self) -> Option<DesktopEnvironment> {
|
|
Some(DesktopEnvironment::Unknown("Nucleic".to_string()))
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn platform(self) -> Platform {
|
|
Platform::Unknown("WASI".to_string())
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn arch(self) -> Result<CpuArchitecture> {
|
|
Ok(if cfg!(target_pointer_width = "64") {
|
|
CpuArchitecture::Wasm64
|
|
} else {
|
|
CpuArchitecture::Wasm32
|
|
})
|
|
}
|
|
}
|