diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-12-16 09:00:46 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-12-16 09:46:30 +0000 |
| commit | 4ee83e2fe5335a8afd78439c35f029c4a472e797 (patch) | |
| tree | bdb111b191e7a68cb74ce29b4bb2757b4b7be91f /src/lib/git | |
| parent | 5fe839e2bf8ceb2931c1984efb2d956980431203 (diff) | |
chore: bump nix flake rust nightly `fmt` overlay
update the rust nightly `fmt` overlay which needs to be pinned
to a specific version (this case by date)
update formatting in main files via `cargo fmt`
Diffstat (limited to 'src/lib/git')
| -rw-r--r-- | src/lib/git/identify_ahead_behind.rs | 8 | ||||
| -rw-r--r-- | src/lib/git/mod.rs | 87 | ||||
| -rw-r--r-- | src/lib/git/nostr_url.rs | 136 |
3 files changed, 104 insertions, 127 deletions
diff --git a/src/lib/git/identify_ahead_behind.rs b/src/lib/git/identify_ahead_behind.rs index d736522..baea687 100644 --- a/src/lib/git/identify_ahead_behind.rs +++ b/src/lib/git/identify_ahead_behind.rs | |||
| @@ -184,10 +184,10 @@ mod tests { | |||
| 184 | identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?; | 184 | identify_ahead_behind(&git_repo, &Some("feature".to_string()), &None)?; |
| 185 | 185 | ||
| 186 | assert_eq!(from_branch, "feature"); | 186 | assert_eq!(from_branch, "feature"); |
| 187 | assert_eq!( | 187 | assert_eq!(ahead, vec![ |
| 188 | ahead, | 188 | oid_to_sha1(&feature_oid), |
| 189 | vec![oid_to_sha1(&feature_oid), oid_to_sha1(&dev_oid_first)] | 189 | oid_to_sha1(&dev_oid_first) |
| 190 | ); | 190 | ]); |
| 191 | assert_eq!(to_branch, "main"); | 191 | assert_eq!(to_branch, "main"); |
| 192 | assert_eq!(behind, vec![]); | 192 | assert_eq!(behind, vec![]); |
| 193 | 193 | ||
diff --git a/src/lib/git/mod.rs b/src/lib/git/mod.rs index 7a7ad5d..2b78f38 100644 --- a/src/lib/git/mod.rs +++ b/src/lib/git/mod.rs | |||
| @@ -3,12 +3,12 @@ use std::{ | |||
| 3 | path::{Path, PathBuf}, | 3 | path::{Path, PathBuf}, |
| 4 | }; | 4 | }; |
| 5 | 5 | ||
| 6 | use anyhow::{bail, Context, Result}; | 6 | use anyhow::{Context, Result, bail}; |
| 7 | use git2::{DiffOptions, Oid, Revwalk}; | 7 | use git2::{DiffOptions, Oid, Revwalk}; |
| 8 | pub use identify_ahead_behind::identify_ahead_behind; | 8 | pub use identify_ahead_behind::identify_ahead_behind; |
| 9 | use nostr_sdk::{ | 9 | use nostr_sdk::{ |
| 10 | hashes::{sha1::Hash as Sha1Hash, Hash}, | ||
| 11 | Tags, | 10 | Tags, |
| 11 | hashes::{Hash, sha1::Hash as Sha1Hash}, | ||
| 12 | }; | 12 | }; |
| 13 | 13 | ||
| 14 | use crate::git_events::{get_commit_id_from_patch, tag_value}; | 14 | use crate::git_events::{get_commit_id_from_patch, tag_value}; |
| @@ -1493,10 +1493,10 @@ mod tests { | |||
| 1493 | &oid_to_sha1(&feature_oid), | 1493 | &oid_to_sha1(&feature_oid), |
| 1494 | )?; | 1494 | )?; |
| 1495 | assert_eq!(ahead, vec![]); | 1495 | assert_eq!(ahead, vec![]); |
| 1496 | assert_eq!( | 1496 | assert_eq!(behind, vec![ |
| 1497 | behind, | 1497 | oid_to_sha1(&behind_2_oid), |
| 1498 | vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid),], | 1498 | oid_to_sha1(&behind_1_oid), |
| 1499 | ); | 1499 | ],); |
| 1500 | Ok(()) | 1500 | Ok(()) |
| 1501 | } | 1501 | } |
| 1502 | 1502 | ||
| @@ -1518,10 +1518,10 @@ mod tests { | |||
| 1518 | &oid_to_sha1(&main_oid), | 1518 | &oid_to_sha1(&main_oid), |
| 1519 | &oid_to_sha1(&ahead_2_oid), | 1519 | &oid_to_sha1(&ahead_2_oid), |
| 1520 | )?; | 1520 | )?; |
| 1521 | assert_eq!( | 1521 | assert_eq!(ahead, vec![ |
| 1522 | ahead, | 1522 | oid_to_sha1(&ahead_2_oid), |
| 1523 | vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid),], | 1523 | oid_to_sha1(&ahead_1_oid), |
| 1524 | ); | 1524 | ],); |
| 1525 | assert_eq!(behind, vec![]); | 1525 | assert_eq!(behind, vec![]); |
| 1526 | Ok(()) | 1526 | Ok(()) |
| 1527 | } | 1527 | } |
| @@ -1550,14 +1550,14 @@ mod tests { | |||
| 1550 | &oid_to_sha1(&behind_2_oid), | 1550 | &oid_to_sha1(&behind_2_oid), |
| 1551 | &oid_to_sha1(&ahead_2_oid), | 1551 | &oid_to_sha1(&ahead_2_oid), |
| 1552 | )?; | 1552 | )?; |
| 1553 | assert_eq!( | 1553 | assert_eq!(ahead, vec![ |
| 1554 | ahead, | 1554 | oid_to_sha1(&ahead_2_oid), |
| 1555 | vec![oid_to_sha1(&ahead_2_oid), oid_to_sha1(&ahead_1_oid)], | 1555 | oid_to_sha1(&ahead_1_oid) |
| 1556 | ); | 1556 | ],); |
| 1557 | assert_eq!( | 1557 | assert_eq!(behind, vec![ |
| 1558 | behind, | 1558 | oid_to_sha1(&behind_2_oid), |
| 1559 | vec![oid_to_sha1(&behind_2_oid), oid_to_sha1(&behind_1_oid)], | 1559 | oid_to_sha1(&behind_1_oid) |
| 1560 | ); | 1560 | ],); |
| 1561 | Ok(()) | 1561 | Ok(()) |
| 1562 | } | 1562 | } |
| 1563 | } | 1563 | } |
| @@ -2212,10 +2212,9 @@ mod tests { | |||
| 2212 | test_repo.populate_with_test_branch()?; | 2212 | test_repo.populate_with_test_branch()?; |
| 2213 | test_repo.checkout("main")?; | 2213 | test_repo.checkout("main")?; |
| 2214 | 2214 | ||
| 2215 | assert_eq!( | 2215 | assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ |
| 2216 | git_repo.parse_starting_commits("HEAD~1")?, | 2216 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")? |
| 2217 | vec![str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?], | 2217 | ],); |
| 2218 | ); | ||
| 2219 | Ok(()) | 2218 | Ok(()) |
| 2220 | } | 2219 | } |
| 2221 | 2220 | ||
| @@ -2225,10 +2224,9 @@ mod tests { | |||
| 2225 | let git_repo = Repo::from_path(&test_repo.dir)?; | 2224 | let git_repo = Repo::from_path(&test_repo.dir)?; |
| 2226 | test_repo.populate_with_test_branch()?; | 2225 | test_repo.populate_with_test_branch()?; |
| 2227 | 2226 | ||
| 2228 | assert_eq!( | 2227 | assert_eq!(git_repo.parse_starting_commits("HEAD~1")?, vec![ |
| 2229 | git_repo.parse_starting_commits("HEAD~1")?, | 2228 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")? |
| 2230 | vec![str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?], | 2229 | ],); |
| 2231 | ); | ||
| 2232 | Ok(()) | 2230 | Ok(()) |
| 2233 | } | 2231 | } |
| 2234 | } | 2232 | } |
| @@ -2242,13 +2240,10 @@ mod tests { | |||
| 2242 | test_repo.populate_with_test_branch()?; | 2240 | test_repo.populate_with_test_branch()?; |
| 2243 | test_repo.checkout("main")?; | 2241 | test_repo.checkout("main")?; |
| 2244 | 2242 | ||
| 2245 | assert_eq!( | 2243 | assert_eq!(git_repo.parse_starting_commits("HEAD~2")?, vec![ |
| 2246 | git_repo.parse_starting_commits("HEAD~2")?, | 2244 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, |
| 2247 | vec![ | 2245 | str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?, |
| 2248 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, | 2246 | ],); |
| 2249 | str_to_sha1("af474d8d271490e5c635aad337abdc050034b16a")?, | ||
| 2250 | ], | ||
| 2251 | ); | ||
| 2252 | Ok(()) | 2247 | Ok(()) |
| 2253 | } | 2248 | } |
| 2254 | } | 2249 | } |
| @@ -2261,14 +2256,11 @@ mod tests { | |||
| 2261 | let git_repo = Repo::from_path(&test_repo.dir)?; | 2256 | let git_repo = Repo::from_path(&test_repo.dir)?; |
| 2262 | test_repo.populate_with_test_branch()?; | 2257 | test_repo.populate_with_test_branch()?; |
| 2263 | 2258 | ||
| 2264 | assert_eq!( | 2259 | assert_eq!(git_repo.parse_starting_commits("HEAD~3")?, vec![ |
| 2265 | git_repo.parse_starting_commits("HEAD~3")?, | 2260 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?, |
| 2266 | vec![ | 2261 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, |
| 2267 | str_to_sha1("82ff2bcc9aa94d1bd8faee723d4c8cc190d6061c")?, | 2262 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, |
| 2268 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, | 2263 | ],); |
| 2269 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, | ||
| 2270 | ], | ||
| 2271 | ); | ||
| 2272 | Ok(()) | 2264 | Ok(()) |
| 2273 | } | 2265 | } |
| 2274 | } | 2266 | } |
| @@ -2282,14 +2274,11 @@ mod tests { | |||
| 2282 | test_repo.populate_with_test_branch()?; | 2274 | test_repo.populate_with_test_branch()?; |
| 2283 | test_repo.checkout("main")?; | 2275 | test_repo.checkout("main")?; |
| 2284 | 2276 | ||
| 2285 | assert_eq!( | 2277 | assert_eq!(git_repo.parse_starting_commits("af474d8..a23e6b0")?, vec![ |
| 2286 | git_repo.parse_starting_commits("af474d8..a23e6b0")?, | 2278 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, |
| 2287 | vec![ | 2279 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, |
| 2288 | str_to_sha1("a23e6b05aaeb7d1471b4a838b51f337d5644eeb0")?, | 2280 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, |
| 2289 | str_to_sha1("7ab82116068982671a8111f27dc10599172334b2")?, | 2281 | ],); |
| 2290 | str_to_sha1("431b84edc0d2fa118d63faa3c2db9c73d630a5ae")?, | ||
| 2291 | ], | ||
| 2292 | ); | ||
| 2293 | Ok(()) | 2282 | Ok(()) |
| 2294 | } | 2283 | } |
| 2295 | } | 2284 | } |
diff --git a/src/lib/git/nostr_url.rs b/src/lib/git/nostr_url.rs index 4fbc786..6b38a93 100644 --- a/src/lib/git/nostr_url.rs +++ b/src/lib/git/nostr_url.rs | |||
| @@ -1,11 +1,11 @@ | |||
| 1 | use core::fmt; | 1 | use core::fmt; |
| 2 | use std::{collections::HashMap, str::FromStr}; | 2 | use std::{collections::HashMap, str::FromStr}; |
| 3 | 3 | ||
| 4 | use anyhow::{anyhow, bail, Context, Error, Result}; | 4 | use anyhow::{Context, Error, Result, anyhow, bail}; |
| 5 | use nostr::nips::{nip01::Coordinate, nip05}; | 5 | use nostr::nips::{nip01::Coordinate, nip05}; |
| 6 | use nostr_sdk::{PublicKey, RelayUrl, ToBech32, Url}; | 6 | use nostr_sdk::{PublicKey, RelayUrl, ToBech32, Url}; |
| 7 | 7 | ||
| 8 | use super::{get_git_config_item, save_git_config_item, Repo}; | 8 | use super::{Repo, get_git_config_item, save_git_config_item}; |
| 9 | 9 | ||
| 10 | #[derive(Debug, PartialEq, Default, Clone)] | 10 | #[derive(Debug, PartialEq, Default, Clone)] |
| 11 | pub enum ServerProtocol { | 11 | pub enum ServerProtocol { |
| @@ -961,24 +961,21 @@ mod tests { | |||
| 961 | #[test] | 961 | #[test] |
| 962 | fn standard() -> Result<()> { | 962 | fn standard() -> Result<()> { |
| 963 | assert_eq!( | 963 | assert_eq!( |
| 964 | format!( | 964 | format!("{}", NostrUrlDecoded { |
| 965 | "{}", | 965 | original_string: String::new(), |
| 966 | NostrUrlDecoded { | 966 | coordinate: Coordinate { |
| 967 | original_string: String::new(), | 967 | identifier: "ngit".to_string(), |
| 968 | coordinate: Coordinate { | 968 | public_key: PublicKey::parse( |
| 969 | identifier: "ngit".to_string(), | 969 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", |
| 970 | public_key: PublicKey::parse( | 970 | ) |
| 971 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", | 971 | .unwrap(), |
| 972 | ) | 972 | kind: nostr_sdk::Kind::GitRepoAnnouncement, |
| 973 | .unwrap(), | 973 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], |
| 974 | kind: nostr_sdk::Kind::GitRepoAnnouncement, | 974 | }, |
| 975 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], | 975 | protocol: None, |
| 976 | }, | 976 | user: None, |
| 977 | protocol: None, | 977 | nip05: None, |
| 978 | user: None, | 978 | }), |
| 979 | nip05: None, | ||
| 980 | } | ||
| 981 | ), | ||
| 982 | "nostr://npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", | 979 | "nostr://npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", |
| 983 | ); | 980 | ); |
| 984 | Ok(()) | 981 | Ok(()) |
| @@ -987,24 +984,21 @@ mod tests { | |||
| 987 | #[test] | 984 | #[test] |
| 988 | fn no_relay() -> Result<()> { | 985 | fn no_relay() -> Result<()> { |
| 989 | assert_eq!( | 986 | assert_eq!( |
| 990 | format!( | 987 | format!("{}", NostrUrlDecoded { |
| 991 | "{}", | 988 | original_string: String::new(), |
| 992 | NostrUrlDecoded { | 989 | coordinate: Coordinate { |
| 993 | original_string: String::new(), | 990 | identifier: "ngit".to_string(), |
| 994 | coordinate: Coordinate { | 991 | public_key: PublicKey::parse( |
| 995 | identifier: "ngit".to_string(), | 992 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", |
| 996 | public_key: PublicKey::parse( | 993 | ) |
| 997 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", | 994 | .unwrap(), |
| 998 | ) | 995 | kind: nostr_sdk::Kind::GitRepoAnnouncement, |
| 999 | .unwrap(), | 996 | relays: vec![], |
| 1000 | kind: nostr_sdk::Kind::GitRepoAnnouncement, | 997 | }, |
| 1001 | relays: vec![], | 998 | protocol: None, |
| 1002 | }, | 999 | user: None, |
| 1003 | protocol: None, | 1000 | nip05: None, |
| 1004 | user: None, | 1001 | }), |
| 1005 | nip05: None, | ||
| 1006 | } | ||
| 1007 | ), | ||
| 1008 | "nostr://npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit", | 1002 | "nostr://npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit", |
| 1009 | ); | 1003 | ); |
| 1010 | Ok(()) | 1004 | Ok(()) |
| @@ -1013,24 +1007,21 @@ mod tests { | |||
| 1013 | #[test] | 1007 | #[test] |
| 1014 | fn with_protocol() -> Result<()> { | 1008 | fn with_protocol() -> Result<()> { |
| 1015 | assert_eq!( | 1009 | assert_eq!( |
| 1016 | format!( | 1010 | format!("{}", NostrUrlDecoded { |
| 1017 | "{}", | 1011 | original_string: String::new(), |
| 1018 | NostrUrlDecoded { | 1012 | coordinate: Coordinate { |
| 1019 | original_string: String::new(), | 1013 | identifier: "ngit".to_string(), |
| 1020 | coordinate: Coordinate { | 1014 | public_key: PublicKey::parse( |
| 1021 | identifier: "ngit".to_string(), | 1015 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", |
| 1022 | public_key: PublicKey::parse( | 1016 | ) |
| 1023 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", | 1017 | .unwrap(), |
| 1024 | ) | 1018 | kind: nostr_sdk::Kind::GitRepoAnnouncement, |
| 1025 | .unwrap(), | 1019 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], |
| 1026 | kind: nostr_sdk::Kind::GitRepoAnnouncement, | 1020 | }, |
| 1027 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], | 1021 | protocol: Some(ServerProtocol::Ssh), |
| 1028 | }, | 1022 | user: None, |
| 1029 | protocol: Some(ServerProtocol::Ssh), | 1023 | nip05: None, |
| 1030 | user: None, | 1024 | }), |
| 1031 | nip05: None, | ||
| 1032 | } | ||
| 1033 | ), | ||
| 1034 | "nostr://ssh/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", | 1025 | "nostr://ssh/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", |
| 1035 | ); | 1026 | ); |
| 1036 | Ok(()) | 1027 | Ok(()) |
| @@ -1039,24 +1030,21 @@ mod tests { | |||
| 1039 | #[test] | 1030 | #[test] |
| 1040 | fn with_protocol_and_user() -> Result<()> { | 1031 | fn with_protocol_and_user() -> Result<()> { |
| 1041 | assert_eq!( | 1032 | assert_eq!( |
| 1042 | format!( | 1033 | format!("{}", NostrUrlDecoded { |
| 1043 | "{}", | 1034 | original_string: String::new(), |
| 1044 | NostrUrlDecoded { | 1035 | coordinate: Coordinate { |
| 1045 | original_string: String::new(), | 1036 | identifier: "ngit".to_string(), |
| 1046 | coordinate: Coordinate { | 1037 | public_key: PublicKey::parse( |
| 1047 | identifier: "ngit".to_string(), | 1038 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", |
| 1048 | public_key: PublicKey::parse( | 1039 | ) |
| 1049 | "npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr", | 1040 | .unwrap(), |
| 1050 | ) | 1041 | kind: nostr_sdk::Kind::GitRepoAnnouncement, |
| 1051 | .unwrap(), | 1042 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], |
| 1052 | kind: nostr_sdk::Kind::GitRepoAnnouncement, | 1043 | }, |
| 1053 | relays: vec![RelayUrl::parse("wss://nos.lol").unwrap()], | 1044 | protocol: Some(ServerProtocol::Ssh), |
| 1054 | }, | 1045 | user: Some("bla".to_string()), |
| 1055 | protocol: Some(ServerProtocol::Ssh), | 1046 | nip05: None, |
| 1056 | user: Some("bla".to_string()), | 1047 | }), |
| 1057 | nip05: None, | ||
| 1058 | } | ||
| 1059 | ), | ||
| 1060 | "nostr://bla@ssh/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", | 1048 | "nostr://bla@ssh/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/nos.lol/ngit", |
| 1061 | ); | 1049 | ); |
| 1062 | Ok(()) | 1050 | Ok(()) |