Skip to content

Commit

Permalink
fix(proxy): thread proxy settings through and tweak a few things alon…
Browse files Browse the repository at this point in the history
…g the way
  • Loading branch information
zkat committed Sep 14, 2023
1 parent 6ad04d5 commit 7d9b476
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 22 deletions.
40 changes: 31 additions & 9 deletions crates/nassun/src/client.rs
Expand Up @@ -86,6 +86,24 @@ impl NassunOpts {
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn proxy(mut self, proxy: bool) -> Self {
self.proxy = proxy;
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn proxy_url(mut self, proxy_url: impl AsRef<str>) -> Self {
self.proxy_url = Some(proxy_url.as_ref().into());
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn no_proxy_domain(mut self, no_proxy_domain: impl AsRef<str>) -> Self {
self.no_proxy_domain = Some(no_proxy_domain.as_ref().into());
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn fetch_retries(mut self, fetch_retries: u32) -> Self {
self.fetch_retries = fetch_retries;
Expand All @@ -105,22 +123,26 @@ impl NassunOpts {
let mut client_builder = OroClient::builder()
.registry(registry)
.fetch_retries(self.fetch_retries)
.set_proxy(self.proxy);
.proxy(self.proxy);
#[cfg(not(target_arch = "wasm32"))]
if let Some(domain) = self.no_proxy_domain {
client_builder = client_builder.no_proxy_domain(domain);
}
#[cfg(not(target_arch = "wasm32"))]
if let Some(proxy) = self.proxy_url {
if let Ok(builder) = client_builder.clone().proxy_url(&proxy) {
client_builder = builder;
} else {
tracing::warn!("Failed to parse proxy URL: {}", proxy)
}
}
#[cfg(not(target_arch = "wasm32"))]
let cache = if let Some(cache) = self.cache {
client_builder = client_builder.cache(cache.clone());
Arc::new(Some(cache))
} else {
Arc::new(None)
};
#[cfg(not(target_arch = "wasm32"))]
if let Some(url) = self.proxy_url {
client_builder = client_builder.set_proxy_url(url).unwrap();
}
#[cfg(not(target_arch = "wasm32"))]
if let Some(url) = self.no_proxy_domain {
client_builder = client_builder.set_no_proxy(url);
}
let client: OroClient = client_builder.build();
Nassun {
#[cfg(not(target_arch = "wasm32"))]
Expand Down
18 changes: 18 additions & 0 deletions crates/node-maintainer/src/maintainer.rs
Expand Up @@ -172,6 +172,24 @@ impl NodeMaintainerOptions {
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn proxy(mut self, proxy: bool) -> Self {
self.nassun_opts = self.nassun_opts.proxy(proxy);
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn proxy_url(mut self, proxy_url: impl AsRef<str>) -> Self {
self.nassun_opts = self.nassun_opts.proxy_url(proxy_url.as_ref());
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn no_proxy_domain(mut self, no_proxy_domain: impl AsRef<str>) -> Self {
self.nassun_opts = self.nassun_opts.no_proxy_domain(no_proxy_domain.as_ref());
self
}

pub fn on_resolution_added<F>(mut self, f: F) -> Self
where
F: Fn() + Send + Sync + 'static,
Expand Down
10 changes: 5 additions & 5 deletions crates/oro-client/src/client.rs
Expand Up @@ -74,13 +74,13 @@ impl OroClientBuilder {
}

#[cfg(not(target_arch = "wasm32"))]
pub fn set_proxy(mut self, proxy: bool) -> Self {
pub fn proxy(mut self, proxy: bool) -> Self {
self.proxy = proxy;
self
}

#[cfg(not(target_arch = "wasm32"))]
pub fn set_proxy_url(mut self, proxy_url: impl AsRef<str>) -> Result<Self, OroClientError> {
pub fn proxy_url(mut self, proxy_url: impl AsRef<str>) -> Result<Self, OroClientError> {
match Url::parse(proxy_url.as_ref()) {
Ok(url_info) => {
let username = url_info.username();
Expand All @@ -91,7 +91,7 @@ impl OroClientBuilder {
proxy = proxy.basic_auth(username, password_str);
}

proxy = proxy.no_proxy(self.get_no_proxy());
proxy = proxy.no_proxy(self.get_no_proxy_domain());
self.proxy_url = Some(proxy);
self.proxy = true;
Ok(self)
Expand All @@ -101,7 +101,7 @@ impl OroClientBuilder {
}

#[cfg(not(target_arch = "wasm32"))]
pub fn set_no_proxy(mut self, no_proxy_domain: impl AsRef<str>) -> Self {
pub fn no_proxy_domain(mut self, no_proxy_domain: impl AsRef<str>) -> Self {
self.no_proxy_domain = Some(no_proxy_domain.as_ref().into());
self
}
Expand Down Expand Up @@ -161,7 +161,7 @@ impl OroClientBuilder {
}

#[cfg(not(target_arch = "wasm32"))]
fn get_no_proxy(&self) -> Option<NoProxy> {
fn get_no_proxy_domain(&self) -> Option<NoProxy> {
if let Some(ref no_proxy_conf) = self.no_proxy_domain {
if !no_proxy_conf.is_empty() {
return NoProxy::from_string(no_proxy_conf);
Expand Down
11 changes: 10 additions & 1 deletion src/apply_args.rs
Expand Up @@ -112,7 +112,7 @@ pub struct ApplyArgs {
pub proxy_url: Option<String>,

#[arg(from_global)]
pub no_proxy: Option<String>,
pub no_proxy_domain: Option<String>,

#[arg(from_global)]
pub fetch_retries: u32,
Expand Down Expand Up @@ -172,6 +172,7 @@ impl ApplyArgs {
.root(root)
.prefer_copy(self.prefer_copy)
.hoisted(self.hoisted)
.proxy(self.proxy)
.on_resolution_added(move || {
Span::current().pb_inc_length(1);
})
Expand Down Expand Up @@ -207,6 +208,14 @@ impl ApplyArgs {
span.pb_set_message(line);
});

if let Some(no_proxy_domain) = self.no_proxy_domain.as_deref() {
nm = nm.no_proxy_domain(no_proxy_domain);
}

if let Some(proxy_url) = self.proxy_url.as_deref() {
nm = nm.proxy_url(proxy_url);
}

for (scope, registry) in &self.scoped_registries {
nm = nm.scope_registry(scope, registry.clone());
}
Expand Down
10 changes: 3 additions & 7 deletions src/lib.rs
Expand Up @@ -617,9 +617,7 @@ impl Orogene {
})),
..Default::default()
}
.add_integration(
sentry::integrations::backtrace::AttachStacktraceIntegration::default(),
)
.add_integration(sentry::integrations::backtrace::AttachStacktraceIntegration)
.add_integration(
sentry::integrations::panic::PanicIntegration::default().add_extractor(
move |info: &PanicInfo| {
Expand Down Expand Up @@ -658,9 +656,7 @@ impl Orogene {
),
)
.add_integration(sentry::integrations::contexts::ContextIntegration::new())
.add_integration(
sentry::integrations::backtrace::ProcessStacktraceIntegration::default(),
),
.add_integration(sentry::integrations::backtrace::ProcessStacktraceIntegration),
);
Ok(Some(ret))
} else {
Expand Down Expand Up @@ -928,6 +924,6 @@ impl OroCommand for HelpMarkdownCmd {

return Ok(());
}
Err(miette::miette!("Command not found: {self.command_name}"))
Err(miette::miette!("Command not found: {}", self.command_name))
}
}

0 comments on commit 7d9b476

Please sign in to comment.