fix(deps): update rust crate serde to v1.0.209 - abandoned #41
5 changed files with 135 additions and 121 deletions
151
images/gitea/Cargo.lock
generated
151
images/gitea/Cargo.lock
generated
|
@ -159,6 +159,29 @@ version = "0.4.1"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1"
|
||||
|
||||
[[package]]
|
||||
name = "cli-table"
|
||||
version = "0.4.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d"
|
||||
dependencies = [
|
||||
"cli-table-derive",
|
||||
"csv",
|
||||
"termcolor",
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cli-table-derive"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2af3bfb9da627b0a6c467624fb7963921433774ed435493b5c08a3053e829ad4"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "color-eyre"
|
||||
version = "0.6.2"
|
||||
|
@ -217,6 +240,27 @@ version = "0.8.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
||||
|
||||
[[package]]
|
||||
name = "csv"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad"
|
||||
dependencies = [
|
||||
"csv-core",
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "csv-core"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.32"
|
||||
|
@ -331,14 +375,12 @@ name = "gitea"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"cli-table",
|
||||
"color-eyre",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"time",
|
||||
"tracing",
|
||||
"tracing-error",
|
||||
"tracing-subscriber",
|
||||
"url",
|
||||
]
|
||||
|
||||
|
@ -556,15 +598,6 @@ dependencies = [
|
|||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matchers"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
|
||||
dependencies = [
|
||||
"regex-automata",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
|
@ -598,16 +631,6 @@ dependencies = [
|
|||
"windows-sys 0.45.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nu-ansi-term"
|
||||
version = "0.46.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
|
||||
dependencies = [
|
||||
"overload",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.15.0"
|
||||
|
@ -639,12 +662,6 @@ version = "0.1.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
|
||||
|
||||
[[package]]
|
||||
name = "overload"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
||||
|
||||
[[package]]
|
||||
name = "owo-colors"
|
||||
version = "3.5.0"
|
||||
|
@ -687,30 +704,6 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
|
||||
dependencies = [
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-automata"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
|
||||
dependencies = [
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.29"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.11.16"
|
||||
|
@ -927,12 +920,6 @@ dependencies = [
|
|||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.4.9"
|
||||
|
@ -977,6 +964,15 @@ dependencies = [
|
|||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "termcolor"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
|
||||
dependencies = [
|
||||
"winapi-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.1.7"
|
||||
|
@ -1084,21 +1080,9 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
|||
dependencies = [
|
||||
"cfg-if",
|
||||
"pin-project-lite",
|
||||
"tracing-attributes",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-attributes"
|
||||
version = "0.1.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.30"
|
||||
|
@ -1119,33 +1103,15 @@ dependencies = [
|
|||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-log"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"log",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-subscriber"
|
||||
version = "0.3.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
|
||||
dependencies = [
|
||||
"matchers",
|
||||
"nu-ansi-term",
|
||||
"once_cell",
|
||||
"regex",
|
||||
"sharded-slab",
|
||||
"smallvec",
|
||||
"thread_local",
|
||||
"tracing",
|
||||
"tracing-core",
|
||||
"tracing-log",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1344,6 +1310,15 @@ version = "0.4.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-util"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
|
|
|
@ -11,11 +11,9 @@ color-eyre = "0.6.2"
|
|||
reqwest = { version = "0.11.16", default-features = false, features = ["blocking", "json", "rustls-tls-native-roots"] }
|
||||
serde_json = "1.0.95"
|
||||
serde = { version = "1.0.159", features = ["derive"] }
|
||||
time = { version = "0.3.20", features = ["formatting", "macros", "serde"] }
|
||||
tracing = "0.1.37"
|
||||
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }
|
||||
time = { version = "0.3.20", features = ["formatting", "parsing", "serde"] }
|
||||
url = { version = "2.3.1", features = ["serde"] }
|
||||
tracing-error = "0.2.0"
|
||||
cli-table = "0.4.7"
|
||||
|
||||
[profile.release]
|
||||
strip = "debuginfo"
|
||||
|
|
|
@ -2,11 +2,14 @@ use std::fs;
|
|||
use std::io::{self, Read};
|
||||
use std::path::Path;
|
||||
|
||||
use cli_table::format::Justify;
|
||||
use cli_table::{print_stderr, Cell, Style, Table};
|
||||
use color_eyre::eyre::{self, Context};
|
||||
use color_eyre::Result;
|
||||
use reqwest::blocking::{Client, Response};
|
||||
use reqwest::header::HeaderMap;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::json;
|
||||
use time::OffsetDateTime;
|
||||
use url::Url;
|
||||
|
||||
|
@ -25,11 +28,26 @@ struct Source {
|
|||
|
||||
#[derive(Deserialize, Serialize, Debug)]
|
||||
struct Version {
|
||||
prs: Vec<String>,
|
||||
#[serde(with = "time::serde::timestamp")]
|
||||
prs: String,
|
||||
#[serde(with = "time::serde::iso8601")]
|
||||
timestamp: OffsetDateTime,
|
||||
}
|
||||
|
||||
impl<'a, I: Iterator<Item = &'a PullRequest>> From<I> for Version {
|
||||
fn from(prs: I) -> Self {
|
||||
Self {
|
||||
prs: prs.fold(String::new(), |mut s, pr| {
|
||||
if !s.is_empty() {
|
||||
s.push(',');
|
||||
}
|
||||
s.push_str(&pr.number.to_string());
|
||||
s
|
||||
}),
|
||||
timestamp: OffsetDateTime::now_utc(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize, Debug)]
|
||||
struct Config {
|
||||
/// Resource configuration.
|
||||
|
@ -43,7 +61,6 @@ struct Config {
|
|||
version: Option<Version>,
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
fn make_client(src: &Source) -> Result<Client> {
|
||||
let mut headers = HeaderMap::new();
|
||||
headers.insert(
|
||||
|
@ -58,7 +75,6 @@ fn make_client(src: &Source) -> Result<Client> {
|
|||
.map_err(From::from)
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
fn fetch(src: &Source) -> Result<Response> {
|
||||
let client = make_client(&src).wrap_err("Failed to create HTTP client")?;
|
||||
let url = src
|
||||
|
@ -73,14 +89,9 @@ fn fetch(src: &Source) -> Result<Response> {
|
|||
.map_err(From::from)
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
fn action_check(conf: Config) -> Result<()> {
|
||||
let prs: Vec<PullRequest> = fetch(&conf.source)?.json()?;
|
||||
let mut version = Version {
|
||||
prs: prs.iter().map(|pr| pr.number.to_string()).collect(),
|
||||
timestamp: OffsetDateTime::now_utc(),
|
||||
};
|
||||
version.prs.sort_unstable();
|
||||
let version = Version::from(prs.iter());
|
||||
|
||||
let out = if let Some(prev) = conf.version {
|
||||
if prev.prs == version.prs {
|
||||
|
@ -92,15 +103,40 @@ fn action_check(conf: Config) -> Result<()> {
|
|||
vec![version]
|
||||
};
|
||||
|
||||
let table: Vec<_> = prs
|
||||
.iter()
|
||||
.map(|pr| {
|
||||
vec![
|
||||
pr.number.cell().justify(Justify::Center),
|
||||
pr.title.clone().cell(),
|
||||
pr.user.login.clone().cell(),
|
||||
pr.base.r#ref.clone().cell(),
|
||||
pr.head.r#ref.clone().cell(),
|
||||
]
|
||||
})
|
||||
.collect();
|
||||
|
||||
let table = table
|
||||
.table()
|
||||
.title(vec![
|
||||
"#".cell().bold(true),
|
||||
"Title".cell().bold(true),
|
||||
"User".cell().bold(true),
|
||||
"Base".cell().bold(true),
|
||||
"Head".cell().bold(true),
|
||||
])
|
||||
.bold(true);
|
||||
|
||||
let _ = print_stderr(table);
|
||||
|
||||
serde_json::to_writer_pretty(io::stdout(), &out)
|
||||
.wrap_err("Failed to write result to stdout")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
fn action_in(conf: Config, dest: impl AsRef<Path>) -> Result<()> {
|
||||
let version = if let Some(version) = conf.version {
|
||||
let old_version = if let Some(version) = conf.version {
|
||||
version
|
||||
} else {
|
||||
eyre::bail!("Version missing in 'in' action.");
|
||||
|
@ -108,11 +144,10 @@ fn action_in(conf: Config, dest: impl AsRef<Path>) -> Result<()> {
|
|||
|
||||
let bytes = fetch(&conf.source)?.bytes()?;
|
||||
let prs: Vec<PullRequest> = serde_json::from_slice(&bytes)?;
|
||||
let version = Version::from(prs.iter());
|
||||
|
||||
{
|
||||
let mut prs: Vec<_> = prs.iter().map(|pr| pr.number.to_string()).collect();
|
||||
prs.sort_unstable();
|
||||
if version.prs != prs {
|
||||
if version.prs != old_version.prs {
|
||||
eyre::bail!("Version to fetch does not match current resource.");
|
||||
}
|
||||
}
|
||||
|
@ -121,10 +156,15 @@ fn action_in(conf: Config, dest: impl AsRef<Path>) -> Result<()> {
|
|||
let _ = fs::create_dir_all(dest);
|
||||
fs::write(&path, &bytes)?;
|
||||
|
||||
let out = json!({
|
||||
"version": version,
|
||||
});
|
||||
|
||||
serde_json::to_writer_pretty(io::stdout(), &out)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip_all)]
|
||||
pub(crate) fn run(action: &Action) -> Result<()> {
|
||||
let config: Config = {
|
||||
let mut buf = String::new();
|
||||
|
|
|
@ -2,10 +2,6 @@ use std::path::PathBuf;
|
|||
|
||||
use clap::{Parser, Subcommand};
|
||||
use color_eyre::Result;
|
||||
use tracing_error::ErrorLayer;
|
||||
use tracing_subscriber::fmt;
|
||||
use tracing_subscriber::prelude::*;
|
||||
use tracing_subscriber::EnvFilter;
|
||||
|
||||
#[derive(Debug, Parser)]
|
||||
#[command(author, version, about, long_about = None)]
|
||||
|
@ -37,15 +33,6 @@ mod cmd {
|
|||
|
||||
// #[tracing::instrument]
|
||||
fn main() -> Result<()> {
|
||||
let filter_layer = EnvFilter::try_from_default_env()
|
||||
.or_else(|_| EnvFilter::try_new("info"))
|
||||
.unwrap();
|
||||
|
||||
tracing_subscriber::registry()
|
||||
.with(filter_layer)
|
||||
.with(ErrorLayer::new(fmt::format::Pretty::default()))
|
||||
.init();
|
||||
|
||||
let cli = Cli::parse();
|
||||
|
||||
match &cli.command {
|
||||
|
|
|
@ -1,6 +1,20 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
pub struct Ref {
|
||||
pub r#ref: String,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
pub struct User {
|
||||
pub login: String,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
pub struct PullRequest {
|
||||
pub number: u64,
|
||||
pub title: String,
|
||||
pub user: User,
|
||||
pub base: Ref,
|
||||
pub head: Ref,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue