diff options
author | Nick Gerace <nickagerace@gmail.com> | 2020-12-14 22:20:26 -0500 |
---|---|---|
committer | Nick Gerace <nickagerace@gmail.com> | 2020-12-14 22:29:40 -0500 |
commit | aed902f0405dded43e248b9ba1fde08e75b40fcb (patch) | |
tree | 9d8eba846c30bf1a3b55f647d6f2f7e5956ae70a | |
parent | d1a872cdf122e35b81738544eee2165fa9fa9b21 (diff) | |
download | gfold-aed902f0405dded43e248b9ba1fde08e75b40fcb.zip |
Add back unpush functionality
Add back unpush functionality, which now returns a boolean only and logs
errors found. Remove empty results message since it was potentially
misleading. For instance, errors may occur silently even though the
message to STDOUT always claims that there are no results to display.
-rw-r--r-- | CHANGELOG.md | 6 | ||||
-rw-r--r-- | Cargo.lock | 24 | ||||
-rw-r--r-- | src/driver.rs | 4 | ||||
-rw-r--r-- | src/util.rs | 61 |
4 files changed, 56 insertions, 39 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index f6da8fa..cbbc926 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,10 +11,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Added - `gfold --version` to issue template +- Unpush functionality (again) + +## Changed + +- Unpush function to only return boolean ## Removed - Contributing section from README to reduce requirements +- Empty results message since it was potentially misleading ## [0.8.1] - 2020-12-01 @@ -90,9 +90,9 @@ checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "cc" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95752358c8f7552394baf48cd82695b345628ad3f170d607de3ca03b8dacca15" +checksum = "4c0496836a84f8d0495758516b8621a622beb77c0fed418570e50764093ced48" dependencies = [ "jobserver", ] @@ -315,9 +315,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" +checksum = "1482821306169ec4d07f6aca392a4681f66c75c9918aa49641a2595db64053cb" [[package]] name = "libgit2-sys" @@ -394,9 +394,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "de52d8eabd217311538a39bba130d7dea1f1e118010fee7a033d966845e7d5fe" dependencies = [ "autocfg", "cc", @@ -537,9 +537,9 @@ checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "serde" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88fa983de7720629c9387e9f517353ed404164b1e482c970a90c1a4aaf7dc1a" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" [[package]] name = "strsim" @@ -573,9 +573,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.53" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8833e20724c24de12bbaba5ad230ea61c3eafb05b881c7c9d3cfe8638b187e68" +checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44" dependencies = [ "proc-macro2", "quote", @@ -685,9 +685,9 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" [[package]] name = "vec_map" diff --git a/src/driver.rs b/src/driver.rs index 48578ac..4040b25 100644 --- a/src/driver.rs +++ b/src/driver.rs @@ -52,9 +52,7 @@ impl Results { Ordering::Equal => { self.0[0].table.printstd(); } - Ordering::Less => { - println!("There are no results to display."); - } + _ => {} }; } diff --git a/src/util.rs b/src/util.rs index f27ee74..f6ea66e 100644 --- a/src/util.rs +++ b/src/util.rs @@ -9,7 +9,6 @@ use crate::driver; use std::path::{Path, PathBuf}; -use eyre::Result; use log::debug; #[derive(Debug)] @@ -18,6 +17,7 @@ enum Condition { Clean, Error, Unclean, + Unpushed, } pub fn create_table_from_paths( @@ -72,13 +72,16 @@ pub fn create_table_from_paths( }; debug!("[+] name: {:#?}", name); - // FIXME: add back function after being fixed. - debug!("[+] unpushed: {:#?}", is_unpushed(&repo_obj, &head).ok()?); - // FIXME: test using the "is_bare()" method for a repository object. let mut opts = git2::StatusOptions::new(); let condition = match repo_obj.statuses(Some(&mut opts)) { - Ok(statuses) if statuses.is_empty() => Condition::Clean, + Ok(statuses) if statuses.is_empty() => { + if is_unpushed(&repo_obj, &head) { + Condition::Unpushed + } else { + Condition::Clean + } + } Ok(_) => Condition::Unclean, Err(error) if error.code() == git2::ErrorCode::BareRepo @@ -104,6 +107,12 @@ pub fn create_table_from_paths( Condition::Unclean => { table.add_row(row![Flb->name, Fyl->"unclean", Fl->branch, Fl->url]) } + Condition::Unpushed if *no_color => { + table.add_row(row![Fl->name, Fl->"unpushed", Fl->branch, Fl->url]) + } + Condition::Unpushed => { + table.add_row(row![Flb->name, Fcl->"unpushed", Fl->branch, Fl->url]) + } _ if *no_color => table.add_row(row![Fl->name, Fl->"error", Fl->branch, Fl->url]), _ => table.add_row(row![Flb->name, Frl->"error", Fl->branch, Fl->url]), }; @@ -120,27 +129,31 @@ pub fn create_table_from_paths( } } -// FIXME: this function does not currently work because "clean", non-main branches can be considered "unpushed". -fn is_unpushed(repo: &git2::Repository, head: &git2::Reference) -> Result<bool> { - let local = head.peel_to_commit()?; +// FIXME: this function may not currently work because "clean", non-main branches can be considered "unpushed". +fn is_unpushed(repo: &git2::Repository, head: &git2::Reference) -> bool { + let local = match head.peel_to_commit() { + Ok(local) => local, + Err(e) => { + debug!("[-] error: {}", e); + return false; + } + }; debug!("[+] local commit: {:#?}", local.id()); - let upstream = repo - .resolve_reference_from_short_name("origin")? - .peel_to_commit()?; + let upstream = match repo.resolve_reference_from_short_name("origin") { + Ok(reference) => match reference.peel_to_commit() { + Ok(upstream) => upstream, + Err(e) => { + debug!("[-] error: {}", e); + return false; + } + }, + Err(e) => { + debug!("[-] error: {}", e); + return false; + } + }; debug!("[+] origin commit: {:#?}", upstream.id()); - match repo.graph_ahead_behind(local.id(), upstream.id())? { - ahead if ahead.0 > 0 => Ok(true), - _ => Ok(false), - } -} - -/* -Condition::Unpushed if *no_color => { - table.add_row(row![Fl->name, Fl->"unpushed", Fl->branch, Fl->url]) -} -Condition::Unpushed => { - table.add_row(row![Flb->name, Fcl->"unpushed", Fl->branch, Fl->url]) + matches!(repo.graph_ahead_behind(local.id(), upstream.id()), Ok(ahead) if ahead.0 > 0) } -*/ |