mirror of
https://github.com/hannobraun/Fornjot
synced 2025-05-25 20:21: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",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"tracing",
|
||||||
|
"tracing-subscriber",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ octocrab = "0.32.0"
|
|||||||
semver = "1.0.20"
|
semver = "1.0.20"
|
||||||
serde = "1.0.193"
|
serde = "1.0.193"
|
||||||
serde_json = "1.0.108"
|
serde_json = "1.0.108"
|
||||||
|
tracing = "0.1.40"
|
||||||
url = "2.5.0"
|
url = "2.5.0"
|
||||||
|
|
||||||
[dependencies.autolib]
|
[dependencies.autolib]
|
||||||
@ -24,3 +25,7 @@ features = ["derive"]
|
|||||||
[dependencies.tokio]
|
[dependencies.tokio]
|
||||||
version = "1.35.0"
|
version = "1.35.0"
|
||||||
features = ["full"]
|
features = ["full"]
|
||||||
|
|
||||||
|
[dependencies.tracing-subscriber]
|
||||||
|
version = "0.3.18"
|
||||||
|
features = ["env-filter"]
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
use std::{collections::HashSet, fmt::Write};
|
use std::{collections::HashSet, fmt::Write};
|
||||||
|
|
||||||
|
use anyhow::Context;
|
||||||
use map_macro::hash_set;
|
use map_macro::hash_set;
|
||||||
use octocrab::Octocrab;
|
use octocrab::Octocrab;
|
||||||
use tokio::{fs::File, io::AsyncWriteExt};
|
use tokio::{fs::File, io::AsyncWriteExt};
|
||||||
@ -17,7 +18,9 @@ pub async fn create_release_announcement(
|
|||||||
let date = util::now_ymd();
|
let date = util::now_ymd();
|
||||||
|
|
||||||
let pull_requests_since_last_release =
|
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 =
|
let pull_requests =
|
||||||
pull_requests_since_last_release.pull_requests.into_values();
|
pull_requests_since_last_release.pull_requests.into_values();
|
||||||
@ -33,12 +36,15 @@ pub async fn create_release_announcement(
|
|||||||
let min_dollars = 32;
|
let min_dollars = 32;
|
||||||
let for_readme = false;
|
let for_readme = false;
|
||||||
let sponsors = Sponsors::query(octocrab)
|
let sponsors = Sponsors::query(octocrab)
|
||||||
.await?
|
.await
|
||||||
.as_markdown(min_dollars, for_readme)?;
|
.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?;
|
let mut file = util::create_blog_post_file("release", &version).await?;
|
||||||
generate_announcement(date, version, sponsors, pull_requests, &mut file)
|
generate_announcement(date, version, sponsors, pull_requests, &mut file)
|
||||||
.await?;
|
.await
|
||||||
|
.context("Failed to generate release announcement")?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ use std::env;
|
|||||||
|
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use octocrab::Octocrab;
|
use octocrab::Octocrab;
|
||||||
|
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
args::{Args, Blog},
|
args::{Args, Blog},
|
||||||
@ -10,6 +11,11 @@ use crate::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
pub async fn run() -> anyhow::Result<()> {
|
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")
|
let token = env::var("GITHUB_TOKEN")
|
||||||
.context("Loading env variable `GITHUB_TOKEN`")?;
|
.context("Loading env variable `GITHUB_TOKEN`")?;
|
||||||
let octocrab = Octocrab::builder().personal_token(token).build()?;
|
let octocrab = Octocrab::builder().personal_token(token).build()?;
|
||||||
|
@ -3,6 +3,7 @@ use std::{cmp::Ordering, collections::HashMap, fmt::Write};
|
|||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use octocrab::Octocrab;
|
use octocrab::Octocrab;
|
||||||
|
use tracing::debug;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Sponsors {
|
pub struct Sponsors {
|
||||||
@ -45,11 +46,16 @@ impl Sponsors {
|
|||||||
let mut json_object = HashMap::new();
|
let mut json_object = HashMap::new();
|
||||||
json_object.insert("query", graphql_query);
|
json_object.insert("query", graphql_query);
|
||||||
|
|
||||||
let response: QueryResult = octocrab
|
let response: serde_json::Value = octocrab
|
||||||
.graphql(&json_object)
|
.graphql(&json_object)
|
||||||
.await
|
.await
|
||||||
.context("GraphQL query failed")?;
|
.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
|
let mut sponsors = response
|
||||||
.data
|
.data
|
||||||
.viewer
|
.viewer
|
||||||
|
Loading…
Reference in New Issue
Block a user