51 lines
1.4 KiB
Rust
51 lines
1.4 KiB
Rust
extern crate irc;
|
|
|
|
use futures::prelude::*;
|
|
use irc::client::prelude::*;
|
|
use std::default::Default;
|
|
use std::env;
|
|
|
|
#[tokio::main]
|
|
async fn main() -> irc::error::Result<()> {
|
|
let repository_slug = env::var("TRAVIS_REPO_SLUG").unwrap();
|
|
let branch = env::var("TRAVIS_BRANCH").unwrap();
|
|
let commit = env::var("TRAVIS_COMMIT").unwrap();
|
|
let commit_message = env::var("TRAVIS_COMMIT_MESSAGE").unwrap();
|
|
let features = env::var("FEATURES").unwrap();
|
|
|
|
let config = Config {
|
|
nickname: Some("irc-crate-ci".to_owned()),
|
|
server: Some("chat.freenode.net".to_owned()),
|
|
alt_nicks: vec!["[irc-crate-ci]".to_owned()],
|
|
..Default::default()
|
|
};
|
|
|
|
let mut client = Client::from_config(config).await?;
|
|
|
|
client.identify()?;
|
|
|
|
let mut stream = client.stream()?;
|
|
|
|
while let Some(message) = stream.next().await.transpose()? {
|
|
match message.command {
|
|
Command::Response(Response::RPL_ISUPPORT, _) => {
|
|
client.send_privmsg(
|
|
"#commits",
|
|
format!(
|
|
"[{}/{}] ({}) {} [{}]",
|
|
repository_slug,
|
|
branch,
|
|
&commit[..7],
|
|
commit_message,
|
|
features,
|
|
),
|
|
)?;
|
|
|
|
client.send_quit("QUIT")?;
|
|
}
|
|
_ => (),
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|