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(()) }