tangled
alpha
login
or
join now
vielle.dev
/
tangled-on-commit
5
fork
atom
Listen to git commits for a specific repo and run a shell command
5
fork
atom
overview
issues
pulls
pipelines
Add old logic back in
vielle.dev
6 months ago
1e5b08c3
cae008da
verified
This commit was signed with the committer's
known signature
.
vielle.dev
SSH Key Fingerprint:
SHA256:/4bvxqoEh9iMdjAPgcgAgXKZZQTROL3ULiPt6nH9RSs=
+40
-3
1 changed file
expand all
collapse all
unified
split
src
main.rs
+40
-3
src/main.rs
···
1
1
+
use std::process::Command;
2
2
+
1
3
mod args;
2
4
mod did;
3
5
mod knot;
···
36
38
37
39
match ws::connect(format!("ws://{}/events", knot_server), |_out| {
38
40
println!(" Connection successful");
39
39
-
|msg| {
41
41
+
|msg: ws::Message| {
40
42
println!("Got message: {}", msg);
43
43
+
44
44
+
// parse json
45
45
+
let body = match json::parse(match msg.as_text() {
46
46
+
Ok(val) => val,
47
47
+
Err(_) => return Ok(()),
48
48
+
}) {
49
49
+
Ok(val) => val,
50
50
+
Err(_) => {
51
51
+
println!(" Invalid body. Skipping message");
52
52
+
return Ok(());
53
53
+
}
54
54
+
};
55
55
+
56
56
+
// filter by did and reponame
57
57
+
if let Some(repo_did) = body["event"]["repoDid"].as_str()
58
58
+
&& let Some(repo) = body["event"]["repoName"].as_str()
59
59
+
&& repo_did != &did_doc.did
60
60
+
&& repo != &config.repo_name
61
61
+
{
62
62
+
// repo doesnt match so skip
63
63
+
return Ok(());
64
64
+
}
65
65
+
66
66
+
println!(" Executing `/bin/sh -c {}`", &config.shell);
67
67
+
68
68
+
// exec shell command in /bin/sh
69
69
+
match Command::new("/bin/sh")
70
70
+
.arg("-c")
71
71
+
.arg(&config.shell)
72
72
+
.output()
73
73
+
{
74
74
+
Ok(val) => val,
75
75
+
Err(_) => return Ok(()),
76
76
+
};
77
77
+
41
78
Ok(())
42
79
}
43
80
}) {
44
44
-
Ok(_) => {},
45
45
-
Err(err) => println!(" Connection failed: {}", err)
81
81
+
Ok(_) => {}
82
82
+
Err(err) => println!(" Connection failed: {}", err),
46
83
};
47
84
48
85
return Ok(());