1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
use std::{
process::{Child, Command},
thread::sleep,
time::Duration,
};
struct Processes {
inner: Vec<Child>,
}
fn main() {
let mut processes = Processes { inner: vec![] };
processes.spawn_in_terminal(&[
"bash",
"-c",
"(cd ../rocie-server && eval \"$(direnv export bash 2>/dev/null)\" && bash -c 'cargo run --package rocie-server -- serve --port 8080')"
]);
processes.spawn_in_terminal(&[
"bash",
"-c",
"trunk serve --proxy-backend=http://localhost:8080/ --proxy-rewrite=/api/",
]);
processes.spawn_in_terminal(&[
"bash",
"-c",
"nix run n#floorp-bin -- http://localhost:3000",
]);
loop {
sleep(Duration::from_secs(2 * 60 * 60));
}
}
impl Drop for Processes {
fn drop(&mut self) {
for process in &mut self.inner {
process.kill().unwrap();
}
}
}
impl Processes {
fn spawn_in_terminal(&mut self, args: &[&str]) {
let mut alacritty = Command::new("alacritty");
alacritty.arg("--hold");
alacritty.arg("--command");
alacritty.args(args);
eprintln!("Spawning `{:?}`", alacritty);
let new_child = alacritty.spawn().unwrap();
self.inner.push(new_child);
}
}
|