1
0
mirror of https://github.com/Llewellynvdm/starship.git synced 2024-11-24 21:57:41 +00:00

feat: make reqwest an optional dependency (#979)

This commit is contained in:
Matan Kushner 2020-03-05 10:53:58 -05:00 committed by GitHub
parent 7f82dd66ed
commit d894ef5ad3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 11 deletions

View File

@ -21,7 +21,8 @@ is-it-maintained-open-issues = { repository = "starship/starship" }
maintenance = { status = "actively-developed" } maintenance = { status = "actively-developed" }
[features] [features]
default = ["battery"] default = ["battery", "http"]
http = ["reqwest"]
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
@ -52,7 +53,7 @@ urlencoding = "1.0.0"
open = "1.3.4" open = "1.3.4"
# OpenSSL causes problems when building a MUSL release. Opting to use native SSL implementation # OpenSSL causes problems when building a MUSL release. Opting to use native SSL implementation
# see: https://github.com/richfelker/musl-cross-make/issues/65#issuecomment-509790889 # see: https://github.com/richfelker/musl-cross-make/issues/65#issuecomment-509790889
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls"] } reqwest = { version = "0.10.4", default-features = false, optional = true, features = ["blocking", "rustls-tls"] }
unicode-width = "0.1.7" unicode-width = "0.1.7"
textwrap = "0.11.0" textwrap = "0.11.0"
term_size = "0.3.1" term_size = "0.3.1"

View File

@ -1,8 +1,9 @@
use crate::utils::exec_cmd; use crate::utils::exec_cmd;
use reqwest;
use std::fs; use std::fs;
use std::path::PathBuf; use std::path::PathBuf;
#[cfg(feature = "http")]
const GIT_IO_BASE_URL: &str = "https://git.io/"; const GIT_IO_BASE_URL: &str = "https://git.io/";
pub fn create() { pub fn create() {
@ -21,14 +22,7 @@ pub fn create() {
if open::that(&link).is_ok() { if open::that(&link).is_ok() {
print!("Take a look at your browser. A GitHub issue has been populated with your configuration") print!("Take a look at your browser. A GitHub issue has been populated with your configuration")
} else { } else {
let link = reqwest::blocking::Client::new() let link = shorten_link(&link).unwrap_or(link);
.post(&format!("{}{}", GIT_IO_BASE_URL, "create"))
.form(&[("url", &link)])
.send()
.and_then(|response| response.text())
.map(|slug| format!("{}{}", GIT_IO_BASE_URL, slug))
.unwrap_or(link);
println!( println!(
"Click this link to create a GitHub issue populated with your configuration:\n\n {}", "Click this link to create a GitHub issue populated with your configuration:\n\n {}",
link link
@ -36,6 +30,22 @@ pub fn create() {
} }
} }
#[cfg(feature = "http")]
fn shorten_link(link: &str) -> Option<String> {
reqwest::blocking::Client::new()
.post(&format!("{}{}", GIT_IO_BASE_URL, "create"))
.form(&[("url", link)])
.send()
.and_then(|response| response.text())
.map(|slug| format!("{}{}", GIT_IO_BASE_URL, slug))
.ok()
}
#[cfg(not(feature = "http"))]
fn shorten_link(_url: &str) -> Option<String> {
None
}
const UNKNOWN_SHELL: &str = "<unknown shell>"; const UNKNOWN_SHELL: &str = "<unknown shell>";
const UNKNOWN_TERMINAL: &str = "<unknown terminal>"; const UNKNOWN_TERMINAL: &str = "<unknown terminal>";
const UNKNOWN_VERSION: &str = "<unknown version>"; const UNKNOWN_VERSION: &str = "<unknown version>";