Fix bug
This commit is contained in:
parent
b4cf2a63d6
commit
9fefbb8c3a
18
src/git.rs
18
src/git.rs
|
@ -74,7 +74,7 @@ fn parse_ssh_url(input: &str) -> Result<(String, String, String)> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parses a github url in the format owner/repo.
|
/// Parses a github url in the format owner/repo.
|
||||||
fn parse_github_url(input: &str) -> Result<(String, String, String)> {
|
fn parse_github_url(input: &str) -> Result<(String, String, String)> {
|
||||||
let split = input.split("/").collect::<Vec<_>>();
|
let split = input.split("/").collect::<Vec<_>>();
|
||||||
if split.len() != 2 {
|
if split.len() != 2 {
|
||||||
return Err(Error::GitUrlParseError);
|
return Err(Error::GitUrlParseError);
|
||||||
|
@ -96,6 +96,10 @@ pub fn parse_to_url(server: &str, owner: &str, repo: &str) -> String {
|
||||||
///
|
///
|
||||||
/// If an error happens, it deletes the directory created.
|
/// If an error happens, it deletes the directory created.
|
||||||
pub fn clone<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
pub fn clone<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
||||||
|
if place.as_ref().exists() {
|
||||||
|
return Err(Error::PathAlreadyExists);
|
||||||
|
}
|
||||||
|
|
||||||
match clone_dirty(url, &place) {
|
match clone_dirty(url, &place) {
|
||||||
Ok(o) => Ok(o),
|
Ok(o) => Ok(o),
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
|
@ -109,10 +113,6 @@ pub fn clone<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
||||||
fn clone_dirty<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
fn clone_dirty<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
||||||
let place = place.as_ref();
|
let place = place.as_ref();
|
||||||
|
|
||||||
if place.exists() {
|
|
||||||
return Err(Error::PathAlreadyExists);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Need to create the parent dir only if it exists
|
// Need to create the parent dir only if it exists
|
||||||
if let Some(parent) = place.parent() {
|
if let Some(parent) = place.parent() {
|
||||||
create_dir_all(parent)?;
|
create_dir_all(parent)?;
|
||||||
|
@ -120,10 +120,10 @@ fn clone_dirty<P: AsRef<Path>>(url: &str, place: P) -> Result<()> {
|
||||||
|
|
||||||
let command = Command::new("git")
|
let command = Command::new("git")
|
||||||
.args(&[
|
.args(&[
|
||||||
"clone",
|
"clone",
|
||||||
"--recurse-submodules",
|
"--recurse-submodules",
|
||||||
&url,
|
&url,
|
||||||
&place.display().to_string()
|
&place.display().to_string(),
|
||||||
])
|
])
|
||||||
.stderr(Stdio::null())
|
.stderr(Stdio::null())
|
||||||
.status();
|
.status();
|
||||||
|
|
Loading…
Reference in New Issue