vanadin_tasks/modules/tools/
node.rs

1use rquickjs::module::{Declarations, Exports, ModuleDef};
2use rquickjs::{Ctx, Function};
3
4pub struct Module;
5
6impl ModuleDef for Module {
7    #[inline(always)]
8    fn declare(declarations: &mut Declarations) -> rquickjs::Result<()> {
9        declarations.declare("node")?;
10        declarations.declare("run")?;
11        declarations.declare("launch")?;
12
13        Ok(())
14    }
15
16    #[inline(always)]
17    fn evaluate<'js>(ctx: &Ctx<'js>, exports: &mut Exports<'js>) -> rquickjs::Result<()> {
18        exports.export("node", Function::new(ctx.clone(), Self::node))?;
19        exports.export("run", Function::new(ctx.clone(), Self::run))?;
20        exports.export("launch", Function::new(ctx.clone(), Self::launch))?;
21
22        Ok(())
23    }
24}
25
26impl Module {
27    #[inline(always)]
28    fn node(cmd: String) -> Option<i32> {
29        std::process::Command::new(format!("node {}", cmd))
30            .spawn()
31            .ok()?
32            .wait()
33            .ok()?
34            .code()
35    }
36
37    #[inline(always)]
38    fn run(file: String) -> Option<i32> {
39        std::process::Command::new(format!(
40            "node --pending-deprecation --report-uncaught-exception {}",
41            file
42        ))
43        .spawn()
44        .ok()?
45        .wait()
46        .ok()?
47        .code()
48    }
49
50    #[inline(always)]
51    fn launch(file: String) -> Option<i32> {
52        std::process::Command::new(format!("node {}", file))
53            .spawn()
54            .ok()?
55            .wait()
56            .ok()?
57            .code()
58    }
59}