mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-24 19:51:36 +00:00
Merge pull request #2142 from hannobraun/automator
Improve error messages and logging in `automator`
This commit is contained in:
commit
07b3869698
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -267,6 +267,8 @@ dependencies = [
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tokio",
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
"url",
|
||||
]
|
||||
|
||||
|
@ -12,6 +12,7 @@ octocrab = "0.32.0"
|
||||
semver = "1.0.20"
|
||||
serde = "1.0.193"
|
||||
serde_json = "1.0.108"
|
||||
tracing = "0.1.40"
|
||||
url = "2.5.0"
|
||||
|
||||
[dependencies.autolib]
|
||||
@ -24,3 +25,7 @@ features = ["derive"]
|
||||
[dependencies.tokio]
|
||||
version = "1.35.0"
|
||||
features = ["full"]
|
||||
|
||||
[dependencies.tracing-subscriber]
|
||||
version = "0.3.18"
|
||||
features = ["env-filter"]
|
||||
|
@ -1,5 +1,6 @@
|
||||
use std::{collections::HashSet, fmt::Write};
|
||||
|
||||
use anyhow::Context;
|
||||
use map_macro::hash_set;
|
||||
use octocrab::Octocrab;
|
||||
use tokio::{fs::File, io::AsyncWriteExt};
|
||||
@ -17,7 +18,9 @@ pub async fn create_release_announcement(
|
||||
let date = util::now_ymd();
|
||||
|
||||
let pull_requests_since_last_release =
|
||||
PullRequestsSinceLastRelease::fetch(octocrab).await?;
|
||||
PullRequestsSinceLastRelease::fetch(octocrab)
|
||||
.await
|
||||
.context("Failed to fetch pull requests since last release")?;
|
||||
|
||||
let pull_requests =
|
||||
pull_requests_since_last_release.pull_requests.into_values();
|
||||
@ -33,12 +36,15 @@ pub async fn create_release_announcement(
|
||||
let min_dollars = 32;
|
||||
let for_readme = false;
|
||||
let sponsors = Sponsors::query(octocrab)
|
||||
.await?
|
||||
.as_markdown(min_dollars, for_readme)?;
|
||||
.await
|
||||
.context("Failed to query sponsors")?
|
||||
.as_markdown(min_dollars, for_readme)
|
||||
.context("Failed to convert sponsor data to Markdown")?;
|
||||
|
||||
let mut file = util::create_blog_post_file("release", &version).await?;
|
||||
generate_announcement(date, version, sponsors, pull_requests, &mut file)
|
||||
.await?;
|
||||
.await
|
||||
.context("Failed to generate release announcement")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ use std::env;
|
||||
|
||||
use anyhow::Context;
|
||||
use octocrab::Octocrab;
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
|
||||
use crate::{
|
||||
args::{Args, Blog},
|
||||
@ -10,6 +11,11 @@ use crate::{
|
||||
};
|
||||
|
||||
pub async fn run() -> anyhow::Result<()> {
|
||||
tracing_subscriber::registry()
|
||||
.with(tracing_subscriber::fmt::layer())
|
||||
.with(tracing_subscriber::EnvFilter::from_default_env())
|
||||
.init();
|
||||
|
||||
let token = env::var("GITHUB_TOKEN")
|
||||
.context("Loading env variable `GITHUB_TOKEN`")?;
|
||||
let octocrab = Octocrab::builder().personal_token(token).build()?;
|
||||
|
@ -3,6 +3,7 @@ use std::{cmp::Ordering, collections::HashMap, fmt::Write};
|
||||
use anyhow::Context;
|
||||
use chrono::{DateTime, Utc};
|
||||
use octocrab::Octocrab;
|
||||
use tracing::debug;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Sponsors {
|
||||
@ -45,11 +46,16 @@ impl Sponsors {
|
||||
let mut json_object = HashMap::new();
|
||||
json_object.insert("query", graphql_query);
|
||||
|
||||
let response: QueryResult = octocrab
|
||||
let response: serde_json::Value = octocrab
|
||||
.graphql(&json_object)
|
||||
.await
|
||||
.context("GraphQL query failed")?;
|
||||
|
||||
debug!("Response to GraphQL query for sponsors:\n{response}");
|
||||
|
||||
let response: QueryResult = serde_json::from_value(response)
|
||||
.context("Failed to deserialize GraphQL query result")?;
|
||||
|
||||
let mut sponsors = response
|
||||
.data
|
||||
.viewer
|
||||
|
Loading…
Reference in New Issue
Block a user