mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-04-12 13:17:21 +00:00
maintainers/scripts: add check-maintainer-usernames
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
This commit is contained in:
parent
a2420d6b98
commit
2361852cc5
1
maintainers/scripts/check-maintainer-usernames/.gitignore
vendored
Normal file
1
maintainers/scripts/check-maintainer-usernames/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/target
|
@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "check-maintainers"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
octocrab = "0.42.1"
|
||||
serde_json = "1.0.133"
|
||||
tokio = { version = "1.41.1", features = ["fs", "macros", "rt-multi-thread"] }
|
42
maintainers/scripts/check-maintainer-usernames/src/main.rs
Normal file
42
maintainers/scripts/check-maintainer-usernames/src/main.rs
Normal file
@ -0,0 +1,42 @@
|
||||
use std::{env, error::Error, io::{self, Write}};
|
||||
|
||||
use tokio::fs;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
real_main().await.unwrap();
|
||||
}
|
||||
|
||||
async fn real_main() -> Result<(), Box<dyn Error>> {
|
||||
let gh = octocrab::OctocrabBuilder::default()
|
||||
.personal_token(env::var("GITHUB_PAT").expect("no GITHUB_PAT configured"))
|
||||
.build()?;
|
||||
|
||||
// first run: nix-instantiate -A lib.maintainers --eval --strict --json > maintainers.json
|
||||
let data: serde_json::Value = serde_json::from_str(&fs::read_to_string("maintainers.json").await?)?;
|
||||
|
||||
let data = data.as_object().unwrap();
|
||||
let total = data.len();
|
||||
for (i, (maintainer_name, v)) in data.iter().enumerate() {
|
||||
print!("\r{i}/{total}");
|
||||
io::stdout().flush()?;
|
||||
let Some(github_id) = v.get("githubId") else {
|
||||
println!("\rWARN: no id for {maintainer_name}");
|
||||
continue;
|
||||
};
|
||||
let Some(github) = v.get("github") else {
|
||||
println!("\rWARN: no username for {maintainer_name}");
|
||||
continue;
|
||||
};
|
||||
let Ok(name) = gh.users_by_id(github_id.as_u64().unwrap()).profile().await else {
|
||||
println!("\rWARN: error fetching {maintainer_name}");
|
||||
continue;
|
||||
};
|
||||
let name = name.login;
|
||||
if name.to_ascii_lowercase() != github.as_str().unwrap().to_ascii_lowercase() {
|
||||
println!("\rERR: {maintainer_name} has github = {github}, but username really is '{name}'");
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue
Block a user