announcing good-first-issue tags added on @tangled.sh (not affiliated with tangled!)

fmt

Changed files
+36 -29
src
+36 -29
src/main.rs
··· 1 1 use clap::Parser; 2 - use url::Url; 3 - use jetstream::{ 4 - JetstreamCompression, JetstreamConfig, JetstreamConnector, 5 - events::{CommitOp, Cursor, EventKind, JetstreamEvent}, 6 - exports::Nsid, 7 - }; 8 2 use jacquard::{ 9 3 api::{ 10 4 app_bsky::feed::post::Post, 11 - app_bsky::richtext::facet::{Facet, ByteSlice}, 5 + app_bsky::richtext::facet::{ByteSlice, Facet}, 6 + com_atproto::repo::create_record::CreateRecord, 12 7 com_atproto::server::create_session::CreateSession, 13 - com_atproto::repo::create_record::CreateRecord, 14 8 }, 15 9 client::{BasicClient, Session}, 16 10 types::{ 17 - datetime::Datetime, 18 - ident::AtIdentifier, 19 - language::Language, 20 - collection::Collection, 21 - value::Data, 22 - string::AtUri, 11 + collection::Collection, datetime::Datetime, ident::AtIdentifier, language::Language, 12 + string::AtUri, value::Data, 23 13 }, 24 14 }; 15 + use jetstream::{ 16 + JetstreamCompression, JetstreamConfig, JetstreamConnector, 17 + events::{CommitOp, Cursor, EventKind, JetstreamEvent}, 18 + exports::Nsid, 19 + }; 20 + use url::Url; 25 21 26 - use std::time::Duration; 27 22 use serde::Deserialize; 23 + use std::time::Duration; 28 24 29 25 type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>; 30 26 ··· 64 60 title: &str, 65 61 repo_issues_url: &str, 66 62 ) -> Result<()> { 67 - let message = format!(r#"good-first-issue added for {repo_name}: 63 + let message = format!( 64 + r#"good-first-issue added for {repo_name}: 68 65 69 - > {title}"#); 66 + > {title}"# 67 + ); 70 68 71 69 let repo_feature = serde_json::json!({ 72 70 "$type": "app.bsky.richtext.facet#link", ··· 117 115 118 116 println!("\nposting..."); 119 117 client 120 - .send(CreateRecord::new() 121 - .repo(identifier.clone()) 122 - .collection(Post::nsid()) 123 - .record(data) 124 - .build()) 118 + .send( 119 + CreateRecord::new() 120 + .repo(identifier.clone()) 121 + .collection(Post::nsid()) 122 + .record(data) 123 + .build(), 124 + ) 125 125 .await? 126 126 .into_output()?; 127 127 128 128 Ok(()) 129 129 } 130 130 131 - fn event_to_create_label<T: for <'a> Deserialize<'a>>(event: JetstreamEvent) -> Result<(T, Cursor)> { 131 + fn event_to_create_label<T: for<'a> Deserialize<'a>>(event: JetstreamEvent) -> Result<(T, Cursor)> { 132 132 if event.kind != EventKind::Commit { 133 133 return Err("not a commit".into()); 134 134 } ··· 185 185 } 186 186 187 187 /// get some atproto record content (from slingshot) 188 - async fn get_record<T: for<'a> Deserialize<'a>>(client: &reqwest::Client, at_uri: &str) -> Result<T> { 188 + async fn get_record<T: for<'a> Deserialize<'a>>( 189 + client: &reqwest::Client, 190 + at_uri: &str, 191 + ) -> Result<T> { 189 192 let mut url: Url = "https://slingshot.microcosm.blue".parse()?; 190 193 url.set_path("/xrpc/com.bad-example.repo.getUriRecord"); 191 194 url.query_pairs_mut().append_pair("at_uri", at_uri); ··· 230 233 client 231 234 .send( 232 235 CreateSession::new() 233 - .identifier(&bot_id.to_string()) 236 + .identifier(bot_id.to_string()) 234 237 .password(args.app_password) 235 238 .build(), 236 239 ) ··· 260 263 261 264 println!("receiving jetstream messages..."); 262 265 loop { 263 - let Some(event) = receiver.recv().await else { 266 + let Some(event) = receiver.recv().await else { 264 267 eprintln!("consumer: could not receive event, bailing"); 265 268 break; 266 269 }; ··· 271 274 272 275 let mut added_good_first_issue = false; 273 276 for added in add { 274 - if added.key == "at://did:plc:wshs7t2adsemcrrd4snkeqli/sh.tangled.label.definition/good-first-issue" { 277 + if added.key 278 + == "at://did:plc:wshs7t2adsemcrrd4snkeqli/sh.tangled.label.definition/good-first-issue" 279 + { 275 280 println!("found a good first issue label!! {:?}", cursor); 276 281 added_good_first_issue = true; 277 282 break; // inner ··· 312 317 } 313 318 Ok(None) => did.to_string(), 314 319 Ok(Some(h)) => format!("@{h}"), 315 - } 320 + }, 316 321 }; 317 322 318 323 let repo_full_name = format!("{nice_tangled_repo_id}/{repo_name}"); ··· 334 339 &repo_url, 335 340 &title, 336 341 &issues_url, 337 - ).await { 342 + ) 343 + .await 344 + { 338 345 eprintln!("failed to post for {subject}: {e}"); 339 346 }; 340 347