aboutsummaryrefslogtreecommitdiffstats
path: root/src/suggestion.rs
diff options
context:
space:
mode:
authorTeddy Wing2020-08-02 05:30:03 +0200
committerTeddy Wing2020-08-02 05:30:03 +0200
commit344f4d3fcd7d36e67ca04dd2e3e21f0e8b12b0dd (patch)
tree9c274f631ffca2c4c9e08a7d4a221a2f8b80d082 /src/suggestion.rs
parent3f125dae8fa2e97354c3c7bc4def4bac1e9eacf1 (diff)
downloadgit-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.rs53
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);
+ }
+}