diff options
author | Teddy Wing | 2020-08-02 05:30:03 +0200 |
---|---|---|
committer | Teddy Wing | 2020-08-02 05:30:03 +0200 |
commit | 344f4d3fcd7d36e67ca04dd2e3e21f0e8b12b0dd (patch) | |
tree | 9c274f631ffca2c4c9e08a7d4a221a2f8b80d082 /src/suggestion.rs | |
parent | 3f125dae8fa2e97354c3c7bc4def4bac1e9eacf1 (diff) | |
download | git-suggestion-344f4d3fcd7d36e67ca04dd2e3e21f0e8b12b0dd.tar.bz2 |
git-sugpatch: Move the suggestion arguments loop to a new function
Split this out into a separate function because I want to reuse it in
`git-sugapply`.
Diffstat (limited to 'src/suggestion.rs')
-rw-r--r-- | src/suggestion.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/suggestion.rs b/src/suggestion.rs new file mode 100644 index 0000000..9617a00 --- /dev/null +++ b/src/suggestion.rs @@ -0,0 +1,53 @@ +use std::process; + +use exitcode; + +use github_suggestion::{Client, Suggestion, SuggestionUrl}; + +use crate::gseprintln; +use crate::arg::is_suggestion_id; +use crate::config::Config; + + +pub fn for_suggestion<F>(config: &Config, f: F) +where F: Fn(&Suggestion) +{ + for suggestion_arg in &config.suggestions { + let suggestion = if match is_suggestion_id(&suggestion_arg) { + Ok(p) => p, + Err(e) => { + gseprintln!(e); + + process::exit(exitcode::SOFTWARE); + } + } { + let o_r = match &config.o_r { + Ok(o_r) => o_r, + Err(e) => { + gseprintln!(e); + process::exit(exitcode::CONFIG); + }, + }; + + let client = Client::new( + &config.github_token, + &o_r.owner, + &o_r.repo, + ).unwrap(); + + client.fetch(&suggestion_arg).unwrap() + } else { + let url: SuggestionUrl = suggestion_arg.parse().unwrap(); + + let client = Client::new( + &config.github_token, + &url.owner, + &url.repo, + ).unwrap(); + + client.fetch(&url.comment_id).unwrap() + }; + + f(&suggestion); + } +} |