fix: address Clippy lints

This commit is contained in:
Harsh Shandilya 2024-03-14 18:13:14 +05:30
parent 18fa5c4fe2
commit 366d433787
2 changed files with 26 additions and 48 deletions

View File

@ -47,7 +47,7 @@ pub fn freeze_repos(dir: &str) -> anyhow::Result<()> {
let shared_repo = let shared_repo =
match ThreadSafeRepository::discover_with_environment_overrides_opts( match ThreadSafeRepository::discover_with_environment_overrides_opts(
path, path,
Default::default(), gix::discover::upwards::Options::default(),
git_open_opts_map, git_open_opts_map,
) { ) {
Ok(repo) => repo, Ok(repo) => repo,
@ -58,17 +58,23 @@ pub fn freeze_repos(dir: &str) -> anyhow::Result<()> {
let repository = shared_repo.to_thread_local(); let repository = shared_repo.to_thread_local();
let branch = get_current_branch(&repository); let branch = get_current_branch(&repository);
let remote = get_remote_for_branch(&repository, branch.as_deref()); let remote = get_remote_for_branch(&repository, branch.as_deref());
if let Some(branch) = branch && if let Some(branch) = branch
let Some(remote) = remote && && let Some(remote) = remote
let Ok(remote_url) = get_url(&repository, &remote) { {
let relative_path = entry.path().strip_prefix(Path::new(dir))?.to_str().unwrap().to_string(); let remote_url = get_url(&repository, &remote);
repos.insert( let relative_path = entry
relative_path, .path()
PersistableRepo { .strip_prefix(Path::new(dir))?
remote_url, .to_str()
head: branch, .unwrap()
}, .to_string();
); repos.insert(
relative_path,
PersistableRepo {
remote_url,
head: branch,
},
);
} }
} }
} }
@ -91,33 +97,7 @@ pub fn thaw_repos(dir: &str, lockfile: &str) -> anyhow::Result<()> {
.args([ .args([
"clone", "clone",
&repo.remote_url, &repo.remote_url,
PathBuf::from(&dir).join(&name).to_str().unwrap(), PathBuf::from(&dir).join(&name).to_str().expect("msg"),
])
.output()
.context("Failed to run `git clone`. Perhaps git is not installed?")?;
if output.status.success() {
tracing::info!("Thawed {name} successfully.");
} else {
tracing::error!("{}", std::str::from_utf8(&output.stderr)?);
}
}
Ok(())
}
pub fn thaw(dir: &str, lockfile: &str) -> anyhow::Result<()> {
let lockfile = fs::read_to_string(lockfile).context(format!("Failed to read {lockfile}"))?;
let repos: HashMap<String, PersistableRepo> = toml::from_str(&lockfile)?;
for (name, repo) in repos {
tracing::info!("Cloning {name} from {}", &repo.remote_url);
let output = Command::new("git")
.args([
"clone",
&repo.remote_url,
PathBuf::from(&dir).join(&name).to_str().unwrap(),
]) ])
.output() .output()
.context("Failed to run `git clone`. Perhaps git is not installed?")?; .context("Failed to run `git clone`. Perhaps git is not installed?")?;
@ -146,11 +126,10 @@ fn get_remote_for_branch(repository: &Repository, branch_name: Option<&str>) ->
.map(|n| n.as_bstr().to_string()) .map(|n| n.as_bstr().to_string())
} }
fn get_url(repo: &Repository, remote_name: &str) -> anyhow::Result<String> { fn get_url(repo: &Repository, remote_name: &str) -> String {
let config = repo.config_snapshot(); let config = repo.config_snapshot();
let remotes = match config.plumbing().sections_by_name("remote") { let Some(remotes) = config.plumbing().sections_by_name("remote") else {
Some(sections) => sections, return String::default();
None => return Ok(Default::default()),
}; };
let mut remote_url: Option<String> = None; let mut remote_url: Option<String> = None;
@ -165,10 +144,8 @@ fn get_url(repo: &Repository, remote_name: &str) -> anyhow::Result<String> {
} }
} }
let remote_url = match remote_url { match remote_url {
Some(url) => url, Some(url) => url,
None => return Ok(Default::default()), None => String::default(),
}; }
Ok(remote_url)
} }

View File

@ -1,4 +1,5 @@
#![feature(let_chains)] #![feature(let_chains)]
#![allow(clippy::missing_errors_doc, clippy::missing_panics_doc)]
pub mod cli; pub mod cli;
pub mod git; pub mod git;
pub mod logging; pub mod logging;