upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/funcs/find_select_recent_repos.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2023-05-21 11:14:47 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2023-05-21 11:14:47 +0000
commit0067804cc00e94ce2b7043e67f9ff50968525479 (patch)
tree2accdc6d4e9b73df4f20499238ec24f24a52a1b8 /src/funcs/find_select_recent_repos.rs
parent5c5feaa732363e32e2a980a887fa42b4394b1a5e (diff)
v0.0.1-alpha funcs
Diffstat (limited to 'src/funcs/find_select_recent_repos.rs')
-rw-r--r--src/funcs/find_select_recent_repos.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/funcs/find_select_recent_repos.rs b/src/funcs/find_select_recent_repos.rs
new file mode 100644
index 0000000..79054c0
--- /dev/null
+++ b/src/funcs/find_select_recent_repos.rs
@@ -0,0 +1,52 @@
1use dialoguer::Select;
2use nostr::{Event, EventId, Filter};
3use nostr_sdk::blocking::Client;
4
5use crate::{kind::Kind, repos::repo::Repo};
6
7pub fn find_select_recent_repos(
8 client: &Client,
9) -> EventId {
10
11 let mut repo_events: Vec<Event> = client.get_events_of(
12 vec![
13 Filter::new()
14 .hashtag("ngit-format-0.0.1")
15 .kind(
16 Kind::InitializeRepo.into_sdk_custom_kind(),
17 )
18 .limit(10),
19 ],
20 None,
21 )
22 .expect("get_events_of to not return an error");
23
24 repo_events.sort();
25 repo_events.dedup();
26
27 if repo_events.is_empty() {
28 panic!("could not find any repositories. Create one with ngit init?")
29 }
30
31 let repos: Vec<Repo> = repo_events.iter().map(|r|
32 Repo::new_from_event(r.clone())
33 .expect("repo to be well formed event")
34 ).collect();
35 let repo_names: Vec<String> = repos.iter().map(|r|
36 match r.name.clone() {
37 None => "(untitled)".to_string(),
38 Some(name) => name,
39 }
40 ).collect();
41
42 // select pr to review
43 let i = Select::new()
44 .with_prompt("clone for a repository on selected relays")
45 .items(&repo_names)
46 .report(false)
47 .interact()
48 .unwrap();
49 // display nevent
50 println!("selected repo: {} {}",repo_names[i], repos[i].nevent());
51 repos[i].id
52} \ No newline at end of file