summaryrefslogtreecommitdiffstats
path: root/vendor/git2/src/proxy_options.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:41:41 +0000
commit10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch)
treebdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/git2/src/proxy_options.rs
parentReleasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff)
downloadrustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz
rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/git2/src/proxy_options.rs')
-rw-r--r--vendor/git2/src/proxy_options.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/vendor/git2/src/proxy_options.rs b/vendor/git2/src/proxy_options.rs
new file mode 100644
index 000000000..b19ba3a52
--- /dev/null
+++ b/vendor/git2/src/proxy_options.rs
@@ -0,0 +1,56 @@
+use std::ffi::CString;
+use std::marker;
+use std::ptr;
+
+use crate::raw;
+use crate::util::Binding;
+
+/// Options which can be specified to various fetch operations.
+#[derive(Default)]
+pub struct ProxyOptions<'a> {
+ url: Option<CString>,
+ proxy_kind: raw::git_proxy_t,
+ _marker: marker::PhantomData<&'a i32>,
+}
+
+impl<'a> ProxyOptions<'a> {
+ /// Creates a new set of proxy options ready to be configured.
+ pub fn new() -> ProxyOptions<'a> {
+ Default::default()
+ }
+
+ /// Try to auto-detect the proxy from the git configuration.
+ ///
+ /// Note that this will override `url` specified before.
+ pub fn auto(&mut self) -> &mut Self {
+ self.proxy_kind = raw::GIT_PROXY_AUTO;
+ self
+ }
+
+ /// Specify the exact URL of the proxy to use.
+ ///
+ /// Note that this will override `auto` specified before.
+ pub fn url(&mut self, url: &str) -> &mut Self {
+ self.proxy_kind = raw::GIT_PROXY_SPECIFIED;
+ self.url = Some(CString::new(url).unwrap());
+ self
+ }
+}
+
+impl<'a> Binding for ProxyOptions<'a> {
+ type Raw = raw::git_proxy_options;
+ unsafe fn from_raw(_raw: raw::git_proxy_options) -> ProxyOptions<'a> {
+ panic!("can't create proxy from raw options")
+ }
+
+ fn raw(&self) -> raw::git_proxy_options {
+ raw::git_proxy_options {
+ version: raw::GIT_PROXY_OPTIONS_VERSION,
+ kind: self.proxy_kind,
+ url: self.url.as_ref().map(|s| s.as_ptr()).unwrap_or(ptr::null()),
+ credentials: None,
+ certificate_check: None,
+ payload: ptr::null_mut(),
+ }
+ }
+}