prefetch-npm-deps: add support for NIX_NPM_TOKENS env var
This commit is contained in:
parent
785ed11d0a
commit
e271266179
@ -3,6 +3,7 @@ use isahc::{
|
|||||||
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
|
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
|
||||||
Body, Request, RequestExt,
|
Body, Request, RequestExt,
|
||||||
};
|
};
|
||||||
|
use serde_json::{Map, Value};
|
||||||
use std::{env, path::Path};
|
use std::{env, path::Path};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
@ -22,6 +23,18 @@ pub fn get_url(url: &Url) -> Result<Body, isahc::Error> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Respect NIX_NPM_TOKENS environment variable, which should be a JSON mapping in the shape of:
|
||||||
|
// `{ "registry.example.com": "example-registry-bearer-token", ... }`
|
||||||
|
if let Some(host) = url.host_str() {
|
||||||
|
if let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") {
|
||||||
|
if let Ok(tokens) = serde_json::from_str::<Map<String, Value>>(&npm_tokens) {
|
||||||
|
if let Some(token) = tokens.get(host).and_then(|val| val.as_str()) {
|
||||||
|
request = request.header("Authorization", format!("Bearer {token}"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(request.body(())?.send()?.into_body())
|
Ok(request.body(())?.send()?.into_body())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user