Return failures during sync
This commit is contained in:
20
src/lib.rs
20
src/lib.rs
@@ -115,7 +115,8 @@ fn get_default_branch(repo: &git2::Repository) -> Result<git2::Branch, String> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sync_trees(config: Config) {
|
fn sync_trees(config: Config) -> bool {
|
||||||
|
let mut failures = false;
|
||||||
for tree in config.trees {
|
for tree in config.trees {
|
||||||
let repos = tree.repos.unwrap_or_default();
|
let repos = tree.repos.unwrap_or_default();
|
||||||
|
|
||||||
@@ -133,7 +134,8 @@ fn sync_trees(config: Config) {
|
|||||||
&repo.name,
|
&repo.name,
|
||||||
"Repo already exists, but is not using a worktree setup",
|
"Repo already exists, but is not using a worktree setup",
|
||||||
);
|
);
|
||||||
process::exit(1);
|
failures = true;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
repo_handle = match open_repo(&repo_path, repo.worktree_setup) {
|
repo_handle = match open_repo(&repo_path, repo.worktree_setup) {
|
||||||
Ok(repo) => Some(repo),
|
Ok(repo) => Some(repo),
|
||||||
@@ -151,7 +153,8 @@ fn sync_trees(config: Config) {
|
|||||||
&format!("Opening repository failed: {}", error),
|
&format!("Opening repository failed: {}", error),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
process::exit(1);
|
failures = true;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} else if matches!(&repo.remotes, None) || repo.remotes.as_ref().unwrap().is_empty() {
|
} else if matches!(&repo.remotes, None) || repo.remotes.as_ref().unwrap().is_empty() {
|
||||||
@@ -200,6 +203,7 @@ fn sync_trees(config: Config) {
|
|||||||
&repo.name,
|
&repo.name,
|
||||||
&format!("Repository failed during getting the remotes: {}", e),
|
&format!("Repository failed during getting the remotes: {}", e),
|
||||||
);
|
);
|
||||||
|
failures = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -222,6 +226,7 @@ fn sync_trees(config: Config) {
|
|||||||
&repo.name,
|
&repo.name,
|
||||||
&format!("Repository failed during setting the remotes: {}", e),
|
&format!("Repository failed during setting the remotes: {}", e),
|
||||||
);
|
);
|
||||||
|
failures = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -230,6 +235,7 @@ fn sync_trees(config: Config) {
|
|||||||
Some(url) => url,
|
Some(url) => url,
|
||||||
None => {
|
None => {
|
||||||
print_repo_error(&repo.name, &format!("Repository failed during getting of the remote URL for remote \"{}\". This is most likely caused by a non-utf8 remote name", remote.name));
|
print_repo_error(&repo.name, &format!("Repository failed during getting of the remote URL for remote \"{}\". This is most likely caused by a non-utf8 remote name", remote.name));
|
||||||
|
failures = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -240,6 +246,7 @@ fn sync_trees(config: Config) {
|
|||||||
);
|
);
|
||||||
if let Err(e) = repo_handle.remote_set_url(&remote.name, &remote.url) {
|
if let Err(e) = repo_handle.remote_set_url(&remote.name, &remote.url) {
|
||||||
print_repo_error(&repo.name, &format!("Repository failed during setting of the remote URL for remote \"{}\": {}", &remote.name, e));
|
print_repo_error(&repo.name, &format!("Repository failed during setting of the remote URL for remote \"{}\": {}", &remote.name, e));
|
||||||
|
failures = true;
|
||||||
continue;
|
continue;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -260,6 +267,7 @@ fn sync_trees(config: Config) {
|
|||||||
¤t_remote, e
|
¤t_remote, e
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
failures = true;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,6 +285,8 @@ fn sync_trees(config: Config) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
!failures
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_repos_without_details(path: &Path) -> Option<Vec<(PathBuf, bool)>> {
|
fn find_repos_without_details(path: &Path) -> Option<Vec<(PathBuf, bool)>> {
|
||||||
@@ -821,7 +831,9 @@ pub fn run() {
|
|||||||
process::exit(1);
|
process::exit(1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
sync_trees(config);
|
if !sync_trees(config) {
|
||||||
|
process::exit(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cmd::ReposAction::Status(args) => match &args.config {
|
cmd::ReposAction::Status(args) => match &args.config {
|
||||||
Some(config_path) => {
|
Some(config_path) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user