Skip to content

Commit 7b25fe6

Browse files
committed
Add homedir
1 parent a73451b commit 7b25fe6

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

modules/os/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ repository = "https://github.com/rquickjs/rquickjs-extra"
88
readme = "README.md"
99

1010
[dependencies]
11+
home = "0.5"
1112
num_cpus = "1"
1213
once_cell = "1"
1314
rquickjs = { version = "0.6", features = ["macro"] }

modules/os/src/lib.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::env;
66
use rquickjs::{
77
module::{Declarations, Exports, ModuleDef},
88
prelude::Func,
9-
Ctx, Result,
9+
Ctx, Exception, Result,
1010
};
1111
use rquickjs_extra_utils::{
1212
module::export_default,
@@ -23,6 +23,12 @@ mod unix;
2323
#[cfg(windows)]
2424
mod windows;
2525

26+
fn get_home_dir(ctx: Ctx<'_>) -> Result<String> {
27+
home::home_dir()
28+
.map(|val| val.to_string_lossy().into_owned())
29+
.ok_or_else(|| Exception::throw_message(&ctx, "Could not determine home directory"))
30+
}
31+
2632
fn get_tmp_dir() -> String {
2733
env::temp_dir().to_string_lossy().to_string()
2834
}
@@ -35,14 +41,15 @@ pub struct OsModule;
3541

3642
impl ModuleDef for OsModule {
3743
fn declare(declare: &Declarations) -> Result<()> {
38-
declare.declare("type")?;
44+
declare.declare("arch")?;
45+
declare.declare("availableParallelism")?;
46+
declare.declare("EOL")?;
47+
declare.declare("platform")?;
48+
declare.declare("homedir")?;
3949
declare.declare("release")?;
4050
declare.declare("tmpdir")?;
41-
declare.declare("platform")?;
51+
declare.declare("type")?;
4252
declare.declare("version")?;
43-
declare.declare("EOL")?;
44-
declare.declare("availableParallelism")?;
45-
declare.declare("arch")?;
4653

4754
declare.declare("default")?;
4855

@@ -51,17 +58,18 @@ impl ModuleDef for OsModule {
5158

5259
fn evaluate<'js>(ctx: &Ctx<'js>, exports: &Exports<'js>) -> Result<()> {
5360
export_default(ctx, exports, |default| {
54-
default.set("type", Func::from(get_type))?;
55-
default.set("release", Func::from(get_release))?;
56-
default.set("tmpdir", Func::from(get_tmp_dir))?;
57-
default.set("platform", Func::from(get_platform))?;
58-
default.set("version", Func::from(get_version))?;
59-
default.set("EOL", EOL)?;
61+
default.set("arch", Func::from(get_arch))?;
6062
default.set(
6163
"availableParallelism",
6264
Func::from(get_available_parallelism),
6365
)?;
64-
default.set("arch", Func::from(get_arch))?;
66+
default.set("EOL", EOL)?;
67+
default.set("homedir", Func::from(get_home_dir))?;
68+
default.set("platform", Func::from(get_platform))?;
69+
default.set("release", Func::from(get_release))?;
70+
default.set("tmpdir", Func::from(get_tmp_dir))?;
71+
default.set("type", Func::from(get_type))?;
72+
default.set("version", Func::from(get_version))?;
6573

6674
Ok(())
6775
})

0 commit comments

Comments
 (0)