From d6faad17e814d252a72e3aca39a4b3898382bab9 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 25 Sep 2024 14:37:17 +0100 Subject: chore: bump rust-nostr v0.35 bump all rust-nostr packages --- Cargo.lock | 157 +++++++++++++++++++++--------- Cargo.toml | 10 +- src/bin/git_remote_nostr/fetch.rs | 6 +- src/bin/git_remote_nostr/list.rs | 2 +- src/bin/git_remote_nostr/push.rs | 38 ++++---- src/bin/git_remote_nostr/utils.rs | 14 +-- src/bin/ngit/sub_commands/list.rs | 14 +-- src/bin/ngit/sub_commands/pull.rs | 9 +- src/bin/ngit/sub_commands/push.rs | 11 +-- src/bin/ngit/sub_commands/send.rs | 4 +- src/lib/client.rs | 75 +++++++------- src/lib/git/mod.rs | 4 +- src/lib/git_events.rs | 36 +++---- src/lib/login/key_encryption.rs | 30 ++---- src/lib/login/mod.rs | 10 +- src/lib/repo_ref.rs | 103 ++++++++++++-------- src/lib/repo_state.rs | 4 +- test_utils/Cargo.toml | 8 +- test_utils/src/git.rs | 2 +- test_utils/src/lib.rs | 14 +-- tests/git_remote_nostr/main.rs | 6 +- tests/git_remote_nostr/push.rs | 98 +++++++++---------- tests/ngit_init.rs | 41 ++++---- tests/ngit_push.rs | 2 +- tests/ngit_send.rs | 200 +++++++++++++++++++------------------- 25 files changed, 477 insertions(+), 421 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f9a683..39ed5e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,6 +120,12 @@ version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "assert_cmd" version = "2.0.16" @@ -319,9 +325,9 @@ dependencies = [ [[package]] name = "async-wsocket" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eee6fcc818b89848df37050215603de0e2e072734e4730c03060feb2d0abebb" +checksum = "5c0984bead67f20366bc8dd46018dfbe189b67eeefb0e5b86b9eade18d7c3c3b" dependencies = [ "async-utility", "futures", @@ -331,7 +337,7 @@ dependencies = [ "tokio", "tokio-rustls", "tokio-socks", - "tokio-tungstenite 0.23.1", + "tokio-tungstenite 0.24.0", "url", "wasm-bindgen", "web-sys", @@ -385,10 +391,14 @@ dependencies = [ ] [[package]] -name = "base64" -version = "0.21.7" +name = "base58ck" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "2c8d66485a3a2ea485c1913c4572ce0256067a5377ac8c75c4960e1cda98605f" +dependencies = [ + "bitcoin-internals 0.3.0", + "bitcoin_hashes 0.14.0", +] [[package]] name = "base64" @@ -404,9 +414,9 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bech32" -version = "0.10.0-beta" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98f7eed2b2781a6f0b5c903471d48e15f56fb4e1165df8a9a2337fd1a59d45ea" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" [[package]] name = "bip39" @@ -421,14 +431,17 @@ dependencies = [ [[package]] name = "bitcoin" -version = "0.31.2" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c85783c2fe40083ea54a33aa2f0ba58831d90fcd190f5bdc47e74e84d2a96ae" +checksum = "ea507acc1cd80fc084ace38544bbcf7ced7c2aa65b653b102de0ce718df668f6" dependencies = [ + "base58ck", "bech32", - "bitcoin-internals", - "bitcoin_hashes 0.13.0", - "hex-conservative", + "bitcoin-internals 0.3.0", + "bitcoin-io", + "bitcoin-units", + "bitcoin_hashes 0.14.0", + "hex-conservative 0.2.1", "hex_lit", "secp256k1", "serde", @@ -439,10 +452,32 @@ name = "bitcoin-internals" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9425c3bf7089c983facbae04de54513cce73b41c7f9ff8c845b54e7bc64ebbfb" + +[[package]] +name = "bitcoin-internals" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30bdbe14aa07b06e6cfeffc529a1f099e5fbe249524f8125358604df99a4bed2" dependencies = [ "serde", ] +[[package]] +name = "bitcoin-io" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340e09e8399c7bd8912f495af6aa58bea0c9214773417ffaa8f6460f93aaee56" + +[[package]] +name = "bitcoin-units" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5285c8bcaa25876d07f37e3d30c303f2609179716e11d688f51e8f1fe70063e2" +dependencies = [ + "bitcoin-internals 0.3.0", + "serde", +] + [[package]] name = "bitcoin_hashes" version = "0.11.0" @@ -455,8 +490,18 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1930a4dabfebb8d7d9992db18ebe3ae2876f0a305fab206fd168df931ede293b" dependencies = [ - "bitcoin-internals", - "hex-conservative", + "bitcoin-internals 0.2.0", + "hex-conservative 0.1.2", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative 0.2.1", "serde", ] @@ -1215,6 +1260,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "212ab92002354b4819390025006c897e8140934349e8635c9b077f47b4dcbd20" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "hex_lit" version = "0.1.1" @@ -1569,9 +1623,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lnurl-pay" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c042191c2e3f27147decfad8182eea2c7dd1c6c1733562e25d3d401369669d" +checksum = "536e7c782167a2d48346ca0b2677fad19eaef20f19a4ab868e4d5b96ca879def" dependencies = [ "bech32", "reqwest", @@ -1697,6 +1751,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e664971378a3987224f7a0e10059782035e89899ae403718ee07de85bec42afe" +[[package]] +name = "negentropy" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a88da9dd148bbcdce323dd6ac47d369b4769d4a3b78c6c52389b9269f77932" + [[package]] name = "ngit" version = "1.5.2" @@ -1766,12 +1826,13 @@ checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" [[package]] name = "nostr" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1c3c32439eef3ea4d9079b2a8f557992d27259c26527e43d4228dd321e43a77" +checksum = "56db234b2e07901e372f34e9463f91590579cd8e6dbd34ed2ccc7e461e4ba639" dependencies = [ "aes", - "base64 0.21.7", + "base64", + "bech32", "bip39", "bitcoin", "cbc", @@ -1780,13 +1841,13 @@ dependencies = [ "getrandom", "instant", "js-sys", - "negentropy", + "negentropy 0.3.1", + "negentropy 0.4.3", "once_cell", "reqwest", "scrypt", "serde", "serde_json", - "tracing", "unicode-normalization", "url", "wasm-bindgen", @@ -1796,9 +1857,9 @@ dependencies = [ [[package]] name = "nostr-database" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1926ef55392f3eea1bbe4a1358b64bbf12dd6eb554f40f483941a102c6263fc6" +checksum = "50de8cc5e77e7dafa7e2e0d0d67187ef19e191dcd1a68efffd3e05152d91b3c3" dependencies = [ "async-trait", "flatbuffers", @@ -1811,13 +1872,15 @@ dependencies = [ [[package]] name = "nostr-relay-pool" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e37c5ea991802a91728d4c09d5a7276938104ead8bf140a63a60acabc5c756" +checksum = "800b9ca169902977366f8243ec645b1fa4a128ab621331796d4a26bd7bc22a88" dependencies = [ "async-utility", "async-wsocket", "atomic-destructor", + "negentropy 0.3.1", + "negentropy 0.4.3", "nostr", "nostr-database", "thiserror", @@ -1828,9 +1891,9 @@ dependencies = [ [[package]] name = "nostr-sdk" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0c0c5f8ddbdfc064ea71883191ec53de6ed52b5dca10ab07f0810b99e91acc" +checksum = "d93036bf4c1e35145ca2cd6ee4cb7bb9c74f41cbca9cc4caff1e87b5e192f253" dependencies = [ "async-utility", "atomic-destructor", @@ -1848,9 +1911,9 @@ dependencies = [ [[package]] name = "nostr-signer" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c30294a7be7d9d5ac777954812f5c7b4ae2a1e583a62e33537f87d98ab23729" +checksum = "c1e132975a677a1c97a7695ef1161291dc06517a588b6e17e3aa05d3fb4056a0" dependencies = [ "async-utility", "nostr", @@ -1862,9 +1925,9 @@ dependencies = [ [[package]] name = "nostr-sqlite" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b634d2a908feccd7b6b2e8d2cea47bc4061b350b7a120cd6c6f2520e4e1fc1a" +checksum = "7b194128279dd0fa77a2be085652b17a10f70b76ec73142f0534e69a23aaf5aa" dependencies = [ "async-trait", "nostr", @@ -1877,9 +1940,9 @@ dependencies = [ [[package]] name = "nostr-zapper" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf3ba30e807145e9cb924faf8fb0719e460f613088e99c753b67c2a9929c5b7" +checksum = "b60e7a3ecc9881ca418e772a6fc4410920653a9f0bf9457b6ddd732d2a3f64f1" dependencies = [ "async-trait", "nostr", @@ -1967,9 +2030,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nwc" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a16ac06bc273fcd4ead47c0c5a58b6cc7db2247fc7a64dd9bc11cf18e3efeb4" +checksum = "2e962f52732a6d91c1e76d4de3f1daa186e77a849e98e5abe53ca7fe9796d04e" dependencies = [ "async-utility", "nostr", @@ -2474,7 +2537,7 @@ version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-core", "futures-util", @@ -2620,7 +2683,7 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ - "base64 0.22.1", + "base64", "rustls-pki-types", ] @@ -2676,9 +2739,9 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.28.2" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24b59d129cdadea20aea4fb2352fa053712e5d713eee47d700cd4b2bc002f10" +checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "bitcoin_hashes 0.13.0", "rand", @@ -2688,9 +2751,9 @@ dependencies = [ [[package]] name = "secp256k1-sys" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", ] @@ -3157,9 +3220,9 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" dependencies = [ "futures-util", "log", @@ -3167,7 +3230,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls", - "tungstenite 0.23.0", + "tungstenite 0.24.0", "webpki-roots", ] @@ -3273,9 +3336,9 @@ dependencies = [ [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" dependencies = [ "byteorder", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 976c117..0d54047 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,11 +24,11 @@ futures = "0.3.28" git2 = "0.19.0" indicatif = "0.17.7" keyring = "2.0.5" -nostr = "0.34.1" -nostr-database = "0.34.0" -nostr-sdk = "0.34.0" -nostr-signer = "0.34.0" -nostr-sqlite = "0.34.0" +nostr = "0.35.0" +nostr-database = "0.35.0" +nostr-sdk = "0.35.0" +nostr-signer = "0.35.0" +nostr-sqlite = "0.35.0" passwords = "3.1.13" qrcode = { version = "0.14.1", default-features = false } scrypt = "0.11.0" diff --git a/src/bin/git_remote_nostr/fetch.rs b/src/bin/git_remote_nostr/fetch.rs index ff55d6f..a972a2f 100644 --- a/src/bin/git_remote_nostr/fetch.rs +++ b/src/bin/git_remote_nostr/fetch.rs @@ -112,9 +112,9 @@ pub fn make_commits_for_proposal( .context(format!( "cannot create commit for patch {}", nip19::Nip19Event { - event_id: patch.id(), - author: Some(patch.author()), - kind: Some(patch.kind()), + event_id: patch.id, + author: Some(patch.pubkey), + kind: Some(patch.kind), relays: if let Some(relay) = repo_ref.relays.first() { vec![relay.to_string()] } else { diff --git a/src/bin/git_remote_nostr/list.rs b/src/bin/git_remote_nostr/list.rs index 378a124..2f2977e 100644 --- a/src/bin/git_remote_nostr/list.rs +++ b/src/bin/git_remote_nostr/list.rs @@ -149,7 +149,7 @@ async fn get_open_proposals_state( if let Ok(cl) = event_to_cover_letter(&proposal) { if let Ok(mut branch_name) = cl.get_branch_name() { branch_name = if let Some(public_key) = current_user { - if proposal.author().eq(&public_key) { + if proposal.pubkey.eq(&public_key) { cl.branch_name.to_string() } else { branch_name diff --git a/src/bin/git_remote_nostr/push.rs b/src/bin/git_remote_nostr/push.rs index 0f4e792..db86c04 100644 --- a/src/bin/git_remote_nostr/push.rs +++ b/src/bin/git_remote_nostr/push.rs @@ -184,7 +184,7 @@ pub async fn run_push( if let Some((_, (proposal, patches))) = find_proposal_and_patches_by_branch_name(to, &all_proposals, ¤t_user) { - if [repo_ref.maintainers.clone(), vec![proposal.author()]] + if [repo_ref.maintainers.clone(), vec![proposal.pubkey]] .concat() .contains(&user_ref.public_key) { @@ -200,7 +200,7 @@ pub async fn run_push( &ahead, &signer, repo_ref, - &Some(proposal.id().to_string()), + &Some(proposal.id.to_string()), &[], ) .await? @@ -223,7 +223,7 @@ pub async fn run_push( root_event_id } else { // tip patch is the root proposal - tip_patch.id() + tip_patch.id }; let mut parent_patch = tip_patch.clone(); ahead.reverse(); @@ -235,7 +235,7 @@ pub async fn run_push( Some(thread_id), &signer, repo_ref, - Some(parent_patch.id()), + Some(parent_patch.id), Some(( (patches.len() + i + 1).try_into().unwrap(), (patches.len() + ahead.len()).try_into().unwrap(), @@ -901,8 +901,8 @@ async fn get_merged_status_events( .await?; if let Some(commit_event) = commit_events.iter().find(|e| { e.tags.iter().any(|t| { - t.as_vec()[0].eq("commit") - && t.as_vec()[1].eq(&parent.id().to_string()) + t.as_slice()[0].eq("commit") + && t.as_slice()[1].eq(&parent.id().to_string()) }) }) { let (proposal_id, revision_id) = @@ -930,7 +930,7 @@ async fn get_merged_status_events( None }, &commit_hash, - commit_event.id(), + commit_event.id, ) .await?, ); @@ -956,9 +956,9 @@ async fn create_merge_status( .iter() .copied() .collect::>(); - public_keys.insert(proposal.author()); + public_keys.insert(proposal.pubkey); if let Some(revision) = revision { - public_keys.insert(revision.author()); + public_keys.insert(revision.pubkey); } sign_event( EventBuilder::new( @@ -971,7 +971,7 @@ async fn create_merge_status( vec!["git proposal merged / applied".to_string()], ), Tag::from_standardized(nostr::TagStandard::Event { - event_id: proposal.id(), + event_id: proposal.id, relay_url: repo_ref.relays.first().map(nostr::UncheckedUrl::new), marker: Some(Marker::Root), public_key: None, @@ -985,7 +985,7 @@ async fn create_merge_status( ], if let Some(revision) = revision { vec![Tag::from_standardized(nostr::TagStandard::Event { - event_id: revision.id(), + event_id: revision.id, relay_url: repo_ref.relays.first().map(nostr::UncheckedUrl::new), marker: Some(Marker::Root), public_key: None, @@ -1023,7 +1023,7 @@ async fn get_proposal_and_revision_root_from_patch( git_repo: &Repo, patch: &Event, ) -> Result<(EventId, Option)> { - let proposal_or_revision = if patch.tags.iter().any(|t| t.as_vec()[1].eq("root")) { + let proposal_or_revision = if patch.tags.iter().any(|t| t.as_slice()[1].eq("root")) { patch.clone() } else { let proposal_or_revision_id = EventId::parse( @@ -1032,9 +1032,9 @@ async fn get_proposal_and_revision_root_from_patch( } else if let Some(t) = patch.tags.iter().find(|t| t.is_reply()) { t.clone() } else { - Tag::event(patch.id()) + Tag::event(patch.id) } - .as_vec()[1] + .as_slice()[1] .clone(), )?; @@ -1048,14 +1048,14 @@ async fn get_proposal_and_revision_root_from_patch( .clone() }; - if !proposal_or_revision.kind().eq(&Kind::GitPatch) { + if !proposal_or_revision.kind.eq(&Kind::GitPatch) { bail!("thread root is not a git patch"); } if proposal_or_revision .tags .iter() - .any(|t| t.as_vec()[1].eq("revision-root")) + .any(|t| t.as_slice()[1].eq("revision-root")) { Ok(( EventId::parse( @@ -1064,13 +1064,13 @@ async fn get_proposal_and_revision_root_from_patch( .iter() .find(|t| t.is_reply()) .unwrap() - .as_vec()[1] + .as_slice()[1] .clone(), )?, - Some(proposal_or_revision.id()), + Some(proposal_or_revision.id), )) } else { - Ok((proposal_or_revision.id(), None)) + Ok((proposal_or_revision.id, None)) } } diff --git a/src/bin/git_remote_nostr/utils.rs b/src/bin/git_remote_nostr/utils.rs index 3ae1bab..a8bbd6f 100644 --- a/src/bin/git_remote_nostr/utils.rs +++ b/src/bin/git_remote_nostr/utils.rs @@ -113,7 +113,7 @@ pub async fn get_open_proposals( vec![ nostr::Filter::default() .kinds(status_kinds().clone()) - .events(proposals.iter().map(nostr::Event::id)), + .events(proposals.iter().map(|e| e.id)), ], ) .await?; @@ -127,15 +127,15 @@ pub async fn get_open_proposals( let status = if let Some(e) = statuses .iter() .filter(|e| { - status_kinds().contains(&e.kind()) - && e.tags() + status_kinds().contains(&e.kind) + && e.tags .iter() - .any(|t| t.as_vec()[1].eq(&proposal.id.to_string())) + .any(|t| t.as_slice()[1].eq(&proposal.id.to_string())) }) .collect::>() .first() { - e.kind() + e.kind } else { Kind::GitStatusOpen }; @@ -148,7 +148,7 @@ pub async fn get_open_proposals( get_most_recent_patch_with_ancestors(commits_events.clone()) { open_proposals - .insert(proposal.id(), (proposal, most_recent_proposal_patch_chain)); + .insert(proposal.id, (proposal, most_recent_proposal_patch_chain)); } } } @@ -178,7 +178,7 @@ pub async fn get_all_proposals( if let Ok(most_recent_proposal_patch_chain) = get_most_recent_patch_with_ancestors(commits_events.clone()) { - all_proposals.insert(proposal.id(), (proposal, most_recent_proposal_patch_chain)); + all_proposals.insert(proposal.id, (proposal, most_recent_proposal_patch_chain)); } } } diff --git a/src/bin/ngit/sub_commands/list.rs b/src/bin/ngit/sub_commands/list.rs index 0755e3b..351896a 100644 --- a/src/bin/ngit/sub_commands/list.rs +++ b/src/bin/ngit/sub_commands/list.rs @@ -52,7 +52,7 @@ pub async fn launch() -> Result<()> { vec![ nostr::Filter::default() .kinds(status_kinds().clone()) - .events(proposals_and_revisions.iter().map(nostr::Event::id)), + .events(proposals_and_revisions.iter().map(|e| e.id)), ], ) .await?; @@ -76,15 +76,15 @@ pub async fn launch() -> Result<()> { let status = if let Some(e) = statuses .iter() .filter(|e| { - status_kinds().contains(&e.kind()) - && e.tags() + status_kinds().contains(&e.kind) + && e.tags .iter() - .any(|t| t.as_vec()[1].eq(&proposal.id.to_string())) + .any(|t| t.as_slice()[1].eq(&proposal.id.to_string())) }) .collect::>() .first() { - e.kind() + e.kind } else { Kind::GitStatusOpen }; @@ -184,7 +184,7 @@ pub async fn launch() -> Result<()> { let commits_events: Vec = get_all_proposal_patch_events_from_cache( git_repo_path, &repo_ref, - &proposals_for_status[selected_index].id(), + &proposals_for_status[selected_index].id, ) .await?; @@ -704,7 +704,7 @@ fn save_patches_to_dir(mut patches: Vec, git_repo: &Repo) -> Resul .truncate(true) .open(path) .context("open new patch file with write and truncate options")?; - file.write_all(patch.content().as_bytes())?; + file.write_all(patch.content.as_bytes())?; file.write_all("\n\n".as_bytes())?; file.flush()?; } diff --git a/src/bin/ngit/sub_commands/pull.rs b/src/bin/ngit/sub_commands/pull.rs index 9a3d911..d79b7b1 100644 --- a/src/bin/ngit/sub_commands/pull.rs +++ b/src/bin/ngit/sub_commands/pull.rs @@ -53,12 +53,9 @@ pub async fn launch() -> Result<()> { .context("cannot find proposal that matches the current branch name")? .clone(); - let commit_events = get_all_proposal_patch_events_from_cache( - git_repo_path, - &repo_ref, - &proposal_root_event.id(), - ) - .await?; + let commit_events = + get_all_proposal_patch_events_from_cache(git_repo_path, &repo_ref, &proposal_root_event.id) + .await?; let most_recent_proposal_patch_chain = get_most_recent_patch_with_ancestors(commit_events.clone()) diff --git a/src/bin/ngit/sub_commands/push.rs b/src/bin/ngit/sub_commands/push.rs index 66edfb4..a77f356 100644 --- a/src/bin/ngit/sub_commands/push.rs +++ b/src/bin/ngit/sub_commands/push.rs @@ -73,12 +73,9 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { .context("cannot find proposal that matches the current branch name")? .clone(); - let commit_events = get_all_proposal_patch_events_from_cache( - git_repo_path, - &repo_ref, - &proposal_root_event.id(), - ) - .await?; + let commit_events = + get_all_proposal_patch_events_from_cache(git_repo_path, &repo_ref, &proposal_root_event.id) + .await?; let most_recent_proposal_patch_chain = get_most_recent_patch_with_ancestors(commit_events) .context("cannot get most recent patch for proposal")?; @@ -191,7 +188,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { Some(proposal_root_event.id), &signer, &repo_ref, - patch_events.last().map(nostr::Event::id), + patch_events.last().map(|e| e.id), None, None, &None, diff --git a/src/bin/ngit/sub_commands/send.rs b/src/bin/ngit/sub_commands/send.rs index a807305..fe2952f 100644 --- a/src/bin/ngit/sub_commands/send.rs +++ b/src/bin/ngit/sub_commands/send.rs @@ -240,9 +240,9 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs, no_fetch: bool) -> Re if root_proposal_id.is_none() { if let Some(event) = events.first() { let event_bech32 = if let Some(relay) = repo_ref.relays.first() { - Nip19Event::new(event.id(), vec![relay]).to_bech32()? + Nip19Event::new(event.id, vec![relay]).to_bech32()? } else { - event.id().to_bech32()? + event.id.to_bech32()? }; println!( "{}", diff --git a/src/lib/client.rs b/src/lib/client.rs index 59e17f2..5f9e996 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs @@ -29,7 +29,7 @@ use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressState, P #[cfg(test)] use mockall::*; use nostr::{nips::nip01::Coordinate, Event}; -use nostr_database::{NostrDatabase, Order}; +use nostr_database::NostrDatabase; use nostr_sdk::{ prelude::RelayLimits, EventBuilder, EventId, Kind, NostrSigner, Options, PublicKey, SingleLetterTag, Timestamp, Url, @@ -231,10 +231,10 @@ impl Connect for Client { }); } save_event_in_cache(git_repo_path, &event).await?; - if event.kind().eq(&Kind::GitRepoAnnouncement) { + if event.kind.eq(&Kind::GitRepoAnnouncement) { save_event_in_global_cache(git_repo_path, &event).await?; } - Ok(event.id()) + Ok(event.id) } async fn get_events( @@ -758,7 +758,7 @@ pub async fn get_events_from_cache( ) -> Result> { get_local_cache_database(git_repo_path) .await? - .query(filters.clone(), Order::Asc) + .query(filters.clone()) .await .context( "cannot execute query on opened git repo nostr cache database .git/nostr-cache.sqlite", @@ -771,7 +771,7 @@ pub async fn get_event_from_global_cache( ) -> Result> { get_global_cache_database(git_repo_path) .await? - .query(filters.clone(), Order::Asc) + .query(filters.clone()) .await .context("cannot execute query on opened ngit nostr cache database") } @@ -839,12 +839,12 @@ pub async fn get_repo_ref_from_cache( let mut events: HashMap = HashMap::new(); for m in &maintainers { - if let Some(e) = repo_events.iter().find(|e| e.author().eq(m)) { + if let Some(e) = repo_events.iter().find(|e| e.pubkey.eq(m)) { events.insert( Coordinate { kind: e.kind, identifier: e.identifier().unwrap().to_string(), - public_key: e.author(), + public_key: e.pubkey, relays: vec![], }, e.clone(), @@ -938,8 +938,8 @@ async fn create_relays_request( .await? { if event_is_patch_set_root(event) || event_is_revision_root(event) { - proposals.insert(event.id()); - contributors.insert(event.author()); + proposals.insert(event.id); + contributors.insert(event.pubkey); } } @@ -951,7 +951,7 @@ async fn create_relays_request( for c in &contributors { if let Some(event) = profile_events .iter() - .find(|e| e.kind() == Kind::Metadata && e.author().eq(c)) + .find(|e| e.kind == Kind::Metadata && e.pubkey.eq(c)) { save_event_in_cache(git_repo_path, event).await?; } else { @@ -1109,7 +1109,7 @@ async fn process_fetched_events( for event in &events { if !request.existing_events.contains(&event.id) { save_event_in_cache(git_repo_path, event).await?; - if event.kind().eq(&Kind::GitRepoAnnouncement) { + if event.kind.eq(&Kind::GitRepoAnnouncement) { save_event_in_global_cache(git_repo_path, event).await?; let new_coordinate = !request .repo_coordinates_without_relays @@ -1135,8 +1135,8 @@ async fn process_fetched_events( if update_to_existing { report.updated_repo_announcements.push(( Coordinate { - kind: event.kind(), - public_key: event.author(), + kind: event.kind, + public_key: event.pubkey, identifier: event.identifier().unwrap().to_owned(), relays: vec![], }, @@ -1155,7 +1155,7 @@ async fn process_fetched_events( .any(|c| c.identifier.eq(&repo_ref.identifier) && m.eq(&c.public_key)) { let c = Coordinate { - kind: event.kind(), + kind: event.kind, public_key: *m, identifier: repo_ref.identifier.clone(), relays: vec![], @@ -1177,7 +1177,7 @@ async fn process_fetched_events( } } } - } else if event.kind().eq(&STATE_KIND) { + } else if event.kind.eq(&STATE_KIND) { let existing_state = if report.updated_state.is_some() { report.updated_state } else { @@ -1193,27 +1193,23 @@ async fn process_fetched_events( } else if event_is_patch_set_root(event) { fresh_proposal_roots.insert(event.id); report.proposals.insert(event.id); - if !request.contributors.contains(&event.author()) - && !fresh_profiles.contains(&event.author()) + if !request.contributors.contains(&event.pubkey) + && !fresh_profiles.contains(&event.pubkey) { - fresh_profiles.insert(event.author()); + fresh_profiles.insert(event.pubkey); } - } else if [Kind::RelayList, Kind::Metadata].contains(&event.kind()) { - if request - .missing_contributor_profiles - .contains(&event.author()) - { - report.contributor_profiles.insert(event.author()); + } else if [Kind::RelayList, Kind::Metadata].contains(&event.kind) { + if request.missing_contributor_profiles.contains(&event.pubkey) { + report.contributor_profiles.insert(event.pubkey); } else if let Some((_, (metadata_timestamp, relay_list_timestamp))) = request .profiles_to_fetch_from_user_relays - .get_key_value(&event.author()) + .get_key_value(&event.pubkey) { - if (Kind::Metadata.eq(&event.kind()) - && event.created_at().gt(metadata_timestamp)) - || (Kind::RelayList.eq(&event.kind()) - && event.created_at().gt(relay_list_timestamp)) + if (Kind::Metadata.eq(&event.kind) && event.created_at.gt(metadata_timestamp)) + || (Kind::RelayList.eq(&event.kind) + && event.created_at.gt(relay_list_timestamp)) { - report.profile_updates.insert(event.author()); + report.profile_updates.insert(event.pubkey); } } save_event_in_global_cache(git_repo_path, event).await?; @@ -1224,9 +1220,9 @@ async fn process_fetched_events( if !request.existing_events.contains(&event.id) && !event.event_ids().any(|id| report.proposals.contains(id)) { - if event.kind().eq(&Kind::GitPatch) && !event_is_patch_set_root(event) { + if event.kind.eq(&Kind::GitPatch) && !event_is_patch_set_root(event) { report.commits.insert(event.id); - } else if status_kinds().contains(&event.kind()) { + } else if status_kinds().contains(&event.kind) { report.statuses.insert(event.id); } } @@ -1549,21 +1545,21 @@ pub async fn get_all_proposal_patch_events_from_cache( vec![ commit_events .iter() - .find(|e| e.id().eq(proposal_id)) + .find(|e| e.id.eq(proposal_id)) .context("proposal not in cache")? - .author(), + .pubkey, ], ] .concat() .iter() .copied() .collect(); - commit_events.retain(|e| permissioned_users.contains(&e.author())); + commit_events.retain(|e| permissioned_users.contains(&e.pubkey)); let revision_roots: HashSet = commit_events .iter() .filter(|e| event_is_revision_root(e)) - .map(nostr::Event::id) + .map(|e| e.id) .collect(); if !revision_roots.is_empty() { @@ -1584,7 +1580,7 @@ pub async fn get_all_proposal_patch_events_from_cache( Ok(commit_events .iter() - .filter(|e| !event_is_cover_letter(e) && permissioned_users.contains(&e.author())) + .filter(|e| !event_is_cover_letter(e) && permissioned_users.contains(&e.pubkey)) .cloned() .collect()) } @@ -1614,10 +1610,7 @@ pub async fn send_events( ) -> Result<()> { let fallback = [ client.get_fallback_relays().clone(), - if events - .iter() - .any(|e| e.kind().eq(&Kind::GitRepoAnnouncement)) - { + if events.iter().any(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) { client.get_blaster_relays().clone() } else { vec![] diff --git a/src/lib/git/mod.rs b/src/lib/git/mod.rs index b0576fd..875a336 100644 --- a/src/lib/git/mod.rs +++ b/src/lib/git/mod.rs @@ -842,9 +842,9 @@ fn extract_sig_from_patch_tags<'a>( ) -> Result> { let v = tags .iter() - .find(|t| t.as_vec()[0].eq(tag_name)) + .find(|t| t.as_slice()[0].eq(tag_name)) .context(format!("tag '{tag_name}' not present in patch"))? - .as_vec(); + .as_slice(); if v.len() != 5 { bail!("tag '{tag_name}' is incorrectly formatted") } diff --git a/src/lib/git_events.rs b/src/lib/git_events.rs index d818f4c..2adc205 100644 --- a/src/lib/git_events.rs +++ b/src/lib/git_events.rs @@ -19,9 +19,9 @@ pub fn tag_value(event: &Event, tag_name: &str) -> Result { Ok(event .tags .iter() - .find(|t| t.as_vec()[0].eq(tag_name)) + .find(|t| t.as_slice()[0].eq(tag_name)) .context(format!("tag '{tag_name}'not present"))? - .as_vec()[1] + .as_slice()[1] .clone()) } @@ -40,11 +40,11 @@ pub fn get_commit_id_from_patch(event: &Event) -> Result { pub fn get_event_root(event: &nostr::Event) -> Result { Ok(EventId::parse( event - .tags() + .tags .iter() .find(|t| t.is_root()) .context("no thread root in event")? - .as_vec() + .as_slice() .get(1) .unwrap(), )?) @@ -60,23 +60,23 @@ pub fn status_kinds() -> Vec { } pub fn event_is_patch_set_root(event: &Event) -> bool { - event.kind.eq(&Kind::GitPatch) && event.tags().iter().any(|t| t.as_vec()[1].eq("root")) + event.kind.eq(&Kind::GitPatch) && event.tags.iter().any(|t| t.as_slice()[1].eq("root")) } pub fn event_is_revision_root(event: &Event) -> bool { event.kind.eq(&Kind::GitPatch) && event - .tags() + .tags .iter() - .any(|t| t.as_vec()[1].eq("revision-root")) + .any(|t| t.as_slice()[1].eq("revision-root")) } pub fn patch_supports_commit_ids(event: &Event) -> bool { event.kind.eq(&Kind::GitPatch) && event - .tags() + .tags .iter() - .any(|t| t.as_vec()[0].eq("commit-pgp-sig")) + .any(|t| t.as_slice()[0].eq("commit-pgp-sig")) } #[allow(clippy::too_many_arguments)] @@ -399,7 +399,7 @@ pub async fn generate_cover_letter_and_patch_events( events.first().map(|event| event.id), signer, repo_ref, - events.last().map(nostr::Event::id), + events.last().map(|e| e.id), if events.is_empty() && commits.len().eq(&1) { None } else { @@ -461,11 +461,11 @@ pub fn event_is_cover_letter(event: &nostr::Event) -> bool { // [PATCH v1 0/n ] or // [PATCH subsystem v2 0/n ] event.kind.eq(&Kind::GitPatch) - && event.tags().iter().any(|t| t.as_vec()[1].eq("root")) + && event.tags.iter().any(|t| t.as_slice()[1].eq("root")) && event - .tags() + .tags .iter() - .any(|t| t.as_vec()[1].eq("cover-letter")) + .any(|t| t.as_slice()[1].eq("cover-letter")) } pub fn commit_msg_from_patch(patch: &nostr::Event) -> Result { @@ -529,7 +529,7 @@ pub fn event_to_cover_letter(event: &nostr::Event) -> Result { .collect(); s }, - event_id: Some(event.id()), + event_id: Some(event.id), }) } @@ -580,17 +580,17 @@ fn get_event_parent_id(event: &nostr::Event) -> Result { Ok(if let Some(reply_tag) = event .tags .iter() - .find(|t| t.as_vec().len().gt(&3) && t.as_vec()[3].eq("reply")) + .find(|t| t.as_slice().len().gt(&3) && t.as_slice()[3].eq("reply")) { reply_tag } else { event .tags .iter() - .find(|t| t.as_vec().len().gt(&3) && t.as_vec()[3].eq("root")) + .find(|t| t.as_slice().len().gt(&3) && t.as_slice()[3].eq("root")) .context("no reply or root e tag present".to_string())? } - .as_vec()[1] + .as_slice()[1] .clone()) } @@ -601,7 +601,7 @@ pub fn is_event_proposal_root_for_branch( ) -> Result { let branch_name = branch_name_or_refstr.replace("refs/heads/", ""); Ok(event_to_cover_letter(e).is_ok_and(|cl| { - (logged_in_user.is_some_and(|public_key| e.author().eq(&public_key)) + (logged_in_user.is_some_and(|public_key| e.pubkey.eq(&public_key)) && (branch_name.eq(&format!("pr/{}", cl.branch_name)) || cl.branch_name.eq(&branch_name))) || cl.get_branch_name().is_ok_and(|s| s.eq(&branch_name)) diff --git a/src/lib/login/key_encryption.rs b/src/lib/login/key_encryption.rs index 3841d50..b50b507 100644 --- a/src/lib/login/key_encryption.rs +++ b/src/lib/login/key_encryption.rs @@ -11,7 +11,7 @@ pub fn encrypt_key(keys: &Keys, password: &str) -> Result { 15 }; Ok(nostr::nips::nip49::EncryptedSecretKey::new( - keys.secret_key()?, + keys.secret_key(), password, log2_rounds, KeySecurity::Medium, @@ -47,14 +47,8 @@ mod tests { let decrypted_key = decrypt_key(TEST_KEY_1_ENCRYPTED, TEST_PASSWORD)?; assert_eq!( - format!( - "{}", - TEST_KEY_1_KEYS.secret_key().unwrap().to_bech32().unwrap() - ), - format!( - "{}", - decrypted_key.secret_key().unwrap().to_bech32().unwrap() - ), + format!("{}", TEST_KEY_1_KEYS.secret_key().to_bech32().unwrap()), + format!("{}", decrypted_key.secret_key().to_bech32().unwrap()), ); Ok(()) } @@ -65,14 +59,8 @@ mod tests { let decrypted_key = decrypt_key(TEST_KEY_1_ENCRYPTED_WEAK, TEST_WEAK_PASSWORD)?; assert_eq!( - format!( - "{}", - TEST_KEY_1_KEYS.secret_key().unwrap().to_bech32().unwrap() - ), - format!( - "{}", - decrypted_key.secret_key().unwrap().to_bech32().unwrap() - ), + format!("{}", TEST_KEY_1_KEYS.secret_key().to_bech32().unwrap()), + format!("{}", decrypted_key.secret_key().to_bech32().unwrap()), ); Ok(()) } @@ -84,8 +72,8 @@ mod tests { let newkey = decrypt_key(s.as_str(), TEST_PASSWORD)?; assert_eq!( - format!("{}", key.secret_key().unwrap().to_bech32().unwrap()), - format!("{}", newkey.secret_key().unwrap().to_bech32().unwrap()), + format!("{}", key.secret_key().to_bech32().unwrap()), + format!("{}", newkey.secret_key().to_bech32().unwrap()), ); Ok(()) } @@ -97,8 +85,8 @@ mod tests { let newkey = decrypt_key(s.as_str(), TEST_PASSWORD)?; assert_eq!( - format!("{}", key.secret_key().unwrap().to_bech32().unwrap()), - format!("{}", newkey.secret_key().unwrap().to_bech32().unwrap()), + format!("{}", key.secret_key().to_bech32().unwrap()), + format!("{}", newkey.secret_key().to_bech32().unwrap()), ); Ok(()) } diff --git a/src/lib/login/mod.rs b/src/lib/login/mod.rs index 825ec30..f262bda 100644 --- a/src/lib/login/mod.rs +++ b/src/lib/login/mod.rs @@ -363,7 +363,7 @@ async fn fresh_login( always_save: bool, ) -> Result<(NostrSigner, UserRef)> { let app_key = Keys::generate(); - let app_key_secret = app_key.secret_key()?.to_secret_hex(); + let app_key_secret = app_key.secret_key().to_secret_hex(); let relays = if let Some(client) = client { client .get_fallback_signer_relays() @@ -652,7 +652,7 @@ fn save_keys(git_repo: &Repo, keys: &nostr::Keys, always_save: bool) -> Result<( .context("failed to get password input from interactor.password")?; encrypt_key(keys, &password)? } else { - keys.secret_key()?.to_bech32()? + keys.secret_key().to_bech32()? }; if let Err(error) = @@ -745,9 +745,9 @@ fn extract_user_relays(public_key: &nostr::PublicKey, events: &[nostr::Event]) - ))) }) .map(|t| UserRelayRef { - url: t.as_vec()[1].clone(), - read: t.as_vec().len() == 2 || t.as_vec()[2].eq("read"), - write: t.as_vec().len() == 2 || t.as_vec()[2].eq("write"), + url: t.as_slice()[1].clone(), + read: t.as_slice().len() == 2 || t.as_slice()[2].eq("read"), + write: t.as_slice().len() == 2 || t.as_slice()[2].eq("write"), }) .collect() } else { diff --git a/src/lib/repo_ref.rs b/src/lib/repo_ref.rs index e498c86..2468d4d 100644 --- a/src/lib/repo_ref.rs +++ b/src/lib/repo_ref.rs @@ -42,42 +42,50 @@ impl TryFrom for RepoRef { } let mut r = Self::default(); - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("d")) { - r.identifier = t.as_vec()[1].clone(); + if let Some(t) = event.tags.iter().find(|t| t.as_slice()[0].eq("d")) { + r.identifier = t.as_slice()[1].clone(); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("name")) { - r.name = t.as_vec()[1].clone(); + if let Some(t) = event.tags.iter().find(|t| t.as_slice()[0].eq("name")) { + r.name = t.as_slice()[1].clone(); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("description")) { - r.description = t.as_vec()[1].clone(); + if let Some(t) = event + .tags + .iter() + .find(|t| t.as_slice()[0].eq("description")) + { + r.description = t.as_slice()[1].clone(); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("clone")) { + if let Some(t) = event.tags.iter().find(|t| t.as_slice()[0].eq("clone")) { r.git_server = t.clone().to_vec(); r.git_server.remove(0); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("web")) { + if let Some(t) = event.tags.iter().find(|t| t.as_slice()[0].eq("web")) { r.web = t.clone().to_vec(); r.web.remove(0); } if let Some(t) = event.tags.iter().find(|t| { - t.as_vec()[0].eq("r") - && t.as_vec()[1].len().eq(&40) - && git2::Oid::from_str(t.as_vec()[1].as_str()).is_ok() + t.as_slice()[0].eq("r") + && t.as_slice()[1].len().eq(&40) + && git2::Oid::from_str(t.as_slice()[1].as_str()).is_ok() }) { - r.root_commit = t.as_vec()[1].clone(); + r.root_commit = t.as_slice()[1].clone(); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("relays")) { + if let Some(t) = event.tags.iter().find(|t| t.as_slice()[0].eq("relays")) { r.relays = t.clone().to_vec(); r.relays.remove(0); } - if let Some(t) = event.tags.iter().find(|t| t.as_vec()[0].eq("maintainers")) { + if let Some(t) = event + .tags + .iter() + .find(|t| t.as_slice()[0].eq("maintainers")) + { let mut maintainers = t.clone().to_vec(); maintainers.remove(0); if !maintainers.contains(&event.pubkey.to_string()) { @@ -98,7 +106,7 @@ impl TryFrom for RepoRef { Coordinate { kind: event.kind, identifier: event.identifier().unwrap().to_string(), - public_key: event.author(), + public_key: event.pubkey, relays: vec![], }, event, @@ -606,7 +614,7 @@ mod tests { .await .tags .iter() - .any(|t| t.as_vec()[0].eq("d") && t.as_vec()[1].eq("123412341")) + .any(|t| t.as_slice()[0].eq("d") && t.as_slice()[1].eq("123412341")) ) } @@ -617,36 +625,44 @@ mod tests { .await .tags .iter() - .any(|t| t.as_vec()[0].eq("name") && t.as_vec()[1].eq("test name")) + .any(|t| t.as_slice()[0].eq("name") && t.as_slice()[1].eq("test name")) ) } #[tokio::test] async fn alt() { - assert!( - create().await.tags.iter().any(|t| t.as_vec()[0].eq("alt") - && t.as_vec()[1].eq("git repository: test name")) - ) + assert!(create().await.tags.iter().any(|t| t.as_slice()[0].eq("alt") + && t.as_slice()[1].eq("git repository: test name"))) } #[tokio::test] async fn description() { - assert!(create().await.tags.iter().any( - |t| t.as_vec()[0].eq("description") && t.as_vec()[1].eq("test description") - )) + assert!( + create() + .await + .tags + .iter() + .any(|t| t.as_slice()[0].eq("description") + && t.as_slice()[1].eq("test description")) + ) } #[tokio::test] async fn root_commit_as_reference() { - assert!(create().await.tags.iter().any(|t| t.as_vec()[0].eq("r") - && t.as_vec()[1].eq("5e664e5a7845cd1373c79f580ca4fe29ab5b34d2"))) + assert!(create().await.tags.iter().any(|t| t.as_slice()[0].eq("r") + && t.as_slice()[1].eq("5e664e5a7845cd1373c79f580ca4fe29ab5b34d2"))) } #[tokio::test] async fn git_server() { - assert!(create().await.tags.iter().any( - |t| t.as_vec()[0].eq("clone") && t.as_vec()[1].eq("https://localhost:1000") - )) + assert!( + create() + .await + .tags + .iter() + .any(|t| t.as_slice()[0].eq("clone") + && t.as_slice()[1].eq("https://localhost:1000")) + ) } #[tokio::test] @@ -655,21 +671,24 @@ mod tests { let relays_tag: &nostr::Tag = event .tags .iter() - .find(|t| t.as_vec()[0].eq("relays")) + .find(|t| t.as_slice()[0].eq("relays")) .unwrap(); - assert_eq!(relays_tag.as_vec().len(), 3); - assert_eq!(relays_tag.as_vec()[1], "ws://relay1.io"); - assert_eq!(relays_tag.as_vec()[2], "ws://relay2.io"); + assert_eq!(relays_tag.as_slice().len(), 3); + assert_eq!(relays_tag.as_slice()[1], "ws://relay1.io"); + assert_eq!(relays_tag.as_slice()[2], "ws://relay2.io"); } #[tokio::test] async fn web() { let event = create().await; - let web_tag: &nostr::Tag = - event.tags.iter().find(|t| t.as_vec()[0].eq("web")).unwrap(); - assert_eq!(web_tag.as_vec().len(), 3); - assert_eq!(web_tag.as_vec()[1], "https://exampleproject.xyz"); - assert_eq!(web_tag.as_vec()[2], "https://gitworkshop.dev/123"); + let web_tag: &nostr::Tag = event + .tags + .iter() + .find(|t| t.as_slice()[0].eq("web")) + .unwrap(); + assert_eq!(web_tag.as_slice().len(), 3); + assert_eq!(web_tag.as_slice()[1], "https://exampleproject.xyz"); + assert_eq!(web_tag.as_slice()[2], "https://gitworkshop.dev/123"); } #[tokio::test] @@ -678,15 +697,15 @@ mod tests { let maintainers_tag: &nostr::Tag = event .tags .iter() - .find(|t| t.as_vec()[0].eq("maintainers")) + .find(|t| t.as_slice()[0].eq("maintainers")) .unwrap(); - assert_eq!(maintainers_tag.as_vec().len(), 3); + assert_eq!(maintainers_tag.as_slice().len(), 3); assert_eq!( - maintainers_tag.as_vec()[1], + maintainers_tag.as_slice()[1], TEST_KEY_1_KEYS.public_key().to_string() ); assert_eq!( - maintainers_tag.as_vec()[2], + maintainers_tag.as_slice()[2], TEST_KEY_2_KEYS.public_key().to_string() ); } diff --git a/src/lib/repo_state.rs b/src/lib/repo_state.rs index a5cebab..c39db34 100644 --- a/src/lib/repo_state.rs +++ b/src/lib/repo_state.rs @@ -15,12 +15,12 @@ impl RepoState { let event = state_events.first().context("no state events")?; let mut state = HashMap::new(); for tag in &event.tags { - if let Some(name) = tag.as_vec().first() { + if let Some(name) = tag.as_slice().first() { if ["refs/heads/", "refs/tags", "HEAD"] .iter() .any(|s| name.starts_with(*s)) { - if let Some(value) = tag.as_vec().get(1) { + if let Some(value) = tag.as_slice().get(1) { if Oid::from_str(value).is_ok() || value.contains("ref: refs/") { state.insert(name.to_owned(), value.to_owned()); } diff --git a/test_utils/Cargo.toml b/test_utils/Cargo.toml index d0442ac..baed990 100644 --- a/test_utils/Cargo.toml +++ b/test_utils/Cargo.toml @@ -10,10 +10,10 @@ dialoguer = "0.10.4" directories = "5.0.1" futures = "0.3.28" git2 = "0.19.0" -nostr = "0.34.1" -nostr-database = "0.34.0" -nostr-sdk = "0.34.0" -nostr-sqlite = "0.34.0" +nostr = "0.35.0" +nostr-database = "0.35.0" +nostr-sdk = "0.35.0" +nostr-sqlite = "0.35.0" once_cell = "1.18.0" rand = "0.8" rexpect = { git = "https://github.com/rust-cli/rexpect.git", rev = "9eb61dd" } diff --git a/test_utils/src/git.rs b/test_utils/src/git.rs index 2a3d566..3c19a2c 100644 --- a/test_utils/src/git.rs +++ b/test_utils/src/git.rs @@ -25,7 +25,7 @@ impl Default for GitTestRepo { let repo_event = generate_repo_ref_event(); let coordinate = Coordinate { kind: Kind::GitRepoAnnouncement, - public_key: repo_event.author(), + public_key: repo_event.pubkey, identifier: repo_event.identifier().unwrap().to_string(), relays: vec![ "ws://localhost:8055".to_string(), diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs index be51ed9..f329681 100644 --- a/test_utils/src/lib.rs +++ b/test_utils/src/lib.rs @@ -10,7 +10,7 @@ use dialoguer::theme::{ColorfulTheme, Theme}; use futures::executor::block_on; use git::GitTestRepo; use nostr::{self, nips::nip65::RelayMetadata, Kind, Tag}; -use nostr_database::{NostrDatabase, Order}; +use nostr_database::NostrDatabase; use nostr_sdk::{serde_json, Client, NostrSigner, TagStandard}; use nostr_sqlite::SQLiteDatabase; use once_cell::sync::Lazy; @@ -1064,7 +1064,7 @@ pub async fn get_events_from_cache( ) -> Result> { get_local_cache_database(git_repo_path) .await? - .query(filters.clone(), Order::Asc) + .query(filters.clone()) .await .context( "cannot execute query on opened git repo nostr cache database .git/nostr-cache.sqlite", @@ -1091,10 +1091,10 @@ pub fn get_proposal_branch_name_from_events( branch_name_in_event: &str, ) -> Result { for event in events { - if event.tags().iter().any(|t| { - !t.as_vec()[1].eq("revision-root") - && event.tags().iter().any(|t| { - t.as_vec()[0].eq("branch-name") && t.as_vec()[1].eq(branch_name_in_event) + if event.tags.iter().any(|t| { + !t.as_slice()[1].eq("revision-root") + && event.tags.iter().any(|t| { + t.as_slice()[0].eq("branch-name") && t.as_slice()[1].eq(branch_name_in_event) }) }) { return Ok(format!( @@ -1379,7 +1379,7 @@ fn get_first_proposal_event_id() -> Result { .find(|e| { e.tags .iter() - .any(|t| t.as_vec()[1].eq(&FEATURE_BRANCH_NAME_1)) + .any(|t| t.as_slice()[1].eq(&FEATURE_BRANCH_NAME_1)) }) .unwrap() .id; diff --git a/tests/git_remote_nostr/main.rs b/tests/git_remote_nostr/main.rs index 5d2dcbb..189d82d 100644 --- a/tests/git_remote_nostr/main.rs +++ b/tests/git_remote_nostr/main.rs @@ -20,7 +20,7 @@ fn get_nostr_remote_url() -> Result { let repo_event = generate_repo_ref_event(); let naddr = Coordinate { kind: Kind::GitRepoAnnouncement, - public_key: repo_event.author(), + public_key: repo_event.pubkey, identifier: repo_event.identifier().unwrap().to_string(), relays: vec![ "ws://localhost:8055".to_string(), @@ -156,7 +156,7 @@ async fn generate_repo_with_state_event() -> Result<(nostr::Event, GitTestRepo)> let state_event = r56 .events .iter() - .find(|e| e.kind().eq(&STATE_KIND)) + .find(|e| e.kind.eq(&STATE_KIND)) .context("state event not created")?; assert_eq!( @@ -164,7 +164,7 @@ async fn generate_repo_with_state_event() -> Result<(nostr::Event, GitTestRepo)> .tags .iter() .filter(|t| t.kind().to_string().as_str().ne("d")) - .map(|t| t.as_vec().to_vec()) + .map(|t| t.as_slice().to_vec()) .collect::>>(), HashSet::from([ vec!["HEAD".to_string(), "ref: refs/heads/main".to_string()], diff --git a/tests/git_remote_nostr/push.rs b/tests/git_remote_nostr/push.rs index f552ee5..e0a4e93 100644 --- a/tests/git_remote_nostr/push.rs +++ b/tests/git_remote_nostr/push.rs @@ -298,7 +298,7 @@ mod two_branches_in_batch_one_added_one_updated { let state_event = r56 .events .iter() - .find(|e| e.kind().eq(&STATE_KIND)) + .find(|e| e.kind.eq(&STATE_KIND)) .context("state event not created")?; assert_eq!( @@ -311,7 +311,7 @@ mod two_branches_in_batch_one_added_one_updated { .tags .iter() .filter(|t| t.kind().to_string().as_str().ne("d")) - .map(|t| t.as_vec().to_vec()) + .map(|t| t.as_slice().to_vec()) .collect::>>(), HashSet::from([ vec!["HEAD".to_string(), "ref: refs/heads/main".to_string()], @@ -415,7 +415,7 @@ mod two_branches_in_batch_one_added_one_updated { let state_event = r56 .events .iter() - .find(|e| e.kind().eq(&STATE_KIND)) + .find(|e| e.kind.eq(&STATE_KIND)) .context("state event not created")?; // println!("{:#?}", state_event); @@ -424,7 +424,7 @@ mod two_branches_in_batch_one_added_one_updated { .tags .iter() .filter(|t| t.kind().to_string().as_str().ne("d")) - .map(|t| t.as_vec().to_vec()) + .map(|t| t.as_slice().to_vec()) .collect::>>(), HashSet::from([ vec!["HEAD".to_string(), "ref: refs/heads/main".to_string()], @@ -710,7 +710,7 @@ mod delete_one_branch { let state_event = r56 .events .iter() - .find(|e| e.kind().eq(&STATE_KIND)) + .find(|e| e.kind.eq(&STATE_KIND)) .context("state event not created")?; // println!("{:#?}", state_event); @@ -719,7 +719,7 @@ mod delete_one_branch { .tags .iter() .filter(|t| t.kind().to_string().as_str().ne("d")) - .map(|t| t.as_vec().to_vec()) + .map(|t| t.as_slice().to_vec()) .collect::>>(), HashSet::from([ vec!["HEAD".to_string(), "ref: refs/heads/main".to_string()], @@ -797,7 +797,7 @@ mod delete_one_branch { let state_event = r56 .events .iter() - .find(|e| e.kind().eq(&STATE_KIND)) + .find(|e| e.kind.eq(&STATE_KIND)) .context("state event not created")?; // println!("{:#?}", state_event); @@ -806,7 +806,7 @@ mod delete_one_branch { .tags .iter() .filter(|t| t.kind().to_string().as_str().ne("d")) - .map(|t| t.as_vec().to_vec()) + .map(|t| t.as_slice().to_vec()) .collect::>>(), HashSet::from([ vec!["HEAD".to_string(), "ref: refs/heads/main".to_string()], @@ -980,16 +980,16 @@ async fn proposal_merge_commit_pushed_to_main_leads_to_status_event_issued() -> .events .iter() .find(|e| { - e.tags() + e.tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) - .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) + .find(|t| t.as_slice()[0].eq("branch-name")) + .is_some_and(|t| t.as_slice()[1].eq(FEATURE_BRANCH_NAME_1)) }) .unwrap(); let merge_status = new_events .iter() - .find(|e| e.kind().eq(&Kind::GitStatusApplied)) + .find(|e| e.kind.eq(&Kind::GitStatusApplied)) .unwrap(); assert_eq!( @@ -997,9 +997,9 @@ async fn proposal_merge_commit_pushed_to_main_leads_to_status_event_issued() -> merge_status .tags .iter() - .find(|t| t.as_vec()[0].eq("merge-commit-id")) + .find(|t| t.as_slice()[0].eq("merge-commit-id")) .unwrap() - .as_vec()[1], + .as_slice()[1], "status sets correct merge-commit-id tag" ); @@ -1007,35 +1007,35 @@ async fn proposal_merge_commit_pushed_to_main_leads_to_status_event_issued() -> .events .iter() .filter(|e| { - e.tags() + e.tags .iter() - .any(|t| t.as_vec()[1].eq(&proposal.id().to_string())) - && e.kind().eq(&Kind::GitPatch) + .any(|t| t.as_slice()[1].eq(&proposal.id.to_string())) + && e.kind.eq(&Kind::GitPatch) }) .last() .unwrap(); assert_eq!( - proposal_tip.id().to_string(), + proposal_tip.id.to_string(), merge_status .tags .iter() - .find(|t| t.as_vec().len().eq(&4) && t.as_vec()[3].eq("mention")) + .find(|t| t.as_slice().len().eq(&4) && t.as_slice()[3].eq("mention")) .unwrap() - .as_vec()[1], + .as_slice()[1], "status mentions proposal tip event \r\nmerge status:\r\n{}\r\nproposal tip:\r\n{}", merge_status.as_json(), proposal_tip.as_json(), ); assert_eq!( - proposal.id().to_string(), + proposal.id.to_string(), merge_status .tags .iter() .find(|t| t.is_root()) .unwrap() - .as_vec()[1], + .as_slice()[1], "status tags proposal id as root \r\nmerge status:\r\n{}\r\nproposal:\r\n{}", merge_status.as_json(), proposal.as_json(), @@ -1136,32 +1136,32 @@ async fn push_2_commits_to_existing_proposal() -> Result<()> { .events .iter() .find(|e| { - e.tags() + e.tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) - .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) + .find(|t| t.as_slice()[0].eq("branch-name")) + .is_some_and(|t| t.as_slice()[1].eq(FEATURE_BRANCH_NAME_1)) }) .unwrap(); assert_eq!( - proposal.id().to_string(), + proposal.id.to_string(), first_new_patch .tags .iter() .find(|t| t.is_root()) .unwrap() - .as_vec()[1], + .as_slice()[1], "first patch sets proposal id as root" ); assert_eq!( - first_new_patch.id().to_string(), + first_new_patch.id.to_string(), second_new_patch .tags .iter() .find(|t| t.is_reply()) .unwrap() - .as_vec()[1], + .as_slice()[1], "second new patch replies to the first new patch" ); @@ -1169,21 +1169,21 @@ async fn push_2_commits_to_existing_proposal() -> Result<()> { .events .iter() .find(|e| { - e.tags() + e.tags .iter() - .any(|t| t.as_vec()[1].eq(&proposal.id().to_string())) + .any(|t| t.as_slice()[1].eq(&proposal.id.to_string())) && e.content.contains("[PATCH 2/2]") }) .unwrap(); assert_eq!( - previous_proposal_tip_event.id().to_string(), + previous_proposal_tip_event.id.to_string(), first_new_patch .tags .iter() .find(|t| t.is_reply()) .unwrap() - .as_vec()[1], + .as_slice()[1], "first patch replies to the previous tip of proposal" ); @@ -1275,26 +1275,26 @@ async fn force_push_creates_proposal_revision() -> Result<()> { .events .iter() .find(|e| { - e.tags() + e.tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) - .is_some_and(|t| t.as_vec()[1].eq(FEATURE_BRANCH_NAME_1)) + .find(|t| t.as_slice()[0].eq("branch-name")) + .is_some_and(|t| t.as_slice()[1].eq(FEATURE_BRANCH_NAME_1)) }) .unwrap(); let revision_root_patch = new_events .iter() - .find(|e| e.tags().iter().any(|t| t.as_vec()[1].eq("revision-root"))) + .find(|e| e.tags.iter().any(|t| t.as_slice()[1].eq("revision-root"))) .unwrap(); assert_eq!( - proposal.id().to_string(), + proposal.id.to_string(), revision_root_patch .tags .iter() .find(|t| t.is_reply()) .unwrap() - .as_vec()[1], + .as_slice()[1], "revision root patch replies to original proposal" ); @@ -1321,24 +1321,24 @@ async fn force_push_creates_proposal_revision() -> Result<()> { ); assert_eq!( - revision_root_patch.id().to_string(), + revision_root_patch.id.to_string(), second_patch .tags .iter() .find(|t| t.is_root()) .unwrap() - .as_vec()[1], + .as_slice()[1], "second patch sets revision id as root" ); assert_eq!( - second_patch.id().to_string(), + second_patch.id.to_string(), third_patch .tags .iter() .find(|t| t.is_reply()) .unwrap() - .as_vec()[1], + .as_slice()[1], "third patch replies to the second new patch" ); @@ -1423,7 +1423,7 @@ async fn push_new_pr_branch_creates_proposal() -> Result<()> { let proposal = new_events .iter() - .find(|e| e.tags().iter().any(|t| t.as_vec()[1].eq("root"))) + .find(|e| e.tags.iter().any(|t| t.as_slice()[1].eq("root"))) .unwrap(); assert!( @@ -1438,11 +1438,11 @@ async fn push_new_pr_branch_creates_proposal() -> Result<()> { assert_eq!( proposal - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) + .find(|t| t.as_slice()[0].eq("branch-name")) .unwrap() - .as_vec()[1], + .as_slice()[1], branch_name.replace("pr/", ""), ); @@ -1457,13 +1457,13 @@ async fn push_new_pr_branch_creates_proposal() -> Result<()> { ); assert_eq!( - proposal.id().to_string(), + proposal.id.to_string(), second_patch .tags .iter() .find(|t| t.is_root()) .unwrap() - .as_vec()[1], + .as_slice()[1], "second patch sets proposal id as root" ); diff --git a/tests/ngit_init.rs b/tests/ngit_init.rs index c8390e3..34da16f 100644 --- a/tests/ngit_init.rs +++ b/tests/ngit_init.rs @@ -464,11 +464,9 @@ mod when_repo_not_previously_claimed { .find(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) .unwrap(); - assert!( - event.tags.iter().any( - |t| t.as_vec()[0].eq("d") && t.as_vec()[1].eq("example-identifier") - ) - ); + assert!(event.tags.iter().any( + |t| t.as_slice()[0].eq("d") && t.as_slice()[1].eq("example-identifier") + )); } Ok(()) } @@ -484,9 +482,9 @@ mod when_repo_not_previously_claimed { .find(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) .unwrap(); - assert!(event.tags.iter().any(|t| t.as_vec()[0].eq("r") - && t.as_vec()[1].eq("9ee507fc4357d7ee16a5d8901bedcd103f23c17d") - && t.as_vec()[2].eq("euc"))); + assert!(event.tags.iter().any(|t| t.as_slice()[0].eq("r") + && t.as_slice()[1].eq("9ee507fc4357d7ee16a5d8901bedcd103f23c17d") + && t.as_slice()[2].eq("euc"))); } Ok(()) } @@ -506,7 +504,8 @@ mod when_repo_not_previously_claimed { event .tags .iter() - .any(|t| t.as_vec()[0].eq("name") && t.as_vec()[1].eq("example-name")) + .any(|t| t.as_slice()[0].eq("name") + && t.as_slice()[1].eq("example-name")) ); } Ok(()) @@ -523,8 +522,8 @@ mod when_repo_not_previously_claimed { .find(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) .unwrap(); - assert!(event.tags.iter().any(|t| t.as_vec()[0].eq("alt") - && t.as_vec()[1].eq("git repository: example-name"))); + assert!(event.tags.iter().any(|t| t.as_slice()[0].eq("alt") + && t.as_slice()[1].eq("git repository: example-name"))); } Ok(()) } @@ -540,8 +539,8 @@ mod when_repo_not_previously_claimed { .find(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) .unwrap(); - assert!(event.tags.iter().any(|t| t.as_vec()[0].eq("description") - && t.as_vec()[1].eq("example-description"))); + assert!(event.tags.iter().any(|t| t.as_slice()[0].eq("description") + && t.as_slice()[1].eq("example-description"))); } Ok(()) } @@ -558,8 +557,8 @@ mod when_repo_not_previously_claimed { .unwrap(); assert!( - event.tags.iter().any(|t| t.as_vec()[0].eq("clone") - && t.as_vec()[1].eq("https://git.myhosting.com/my-repo.git")) /* todo check it defaults to origin */ + event.tags.iter().any(|t| t.as_slice()[0].eq("clone") + && t.as_slice()[1].eq("https://git.myhosting.com/my-repo.git")) /* todo check it defaults to origin */ ); } Ok(()) @@ -578,9 +577,9 @@ mod when_repo_not_previously_claimed { let relays_tag = event .tags .iter() - .find(|t| t.as_vec()[0].eq("relays")) + .find(|t| t.as_slice()[0].eq("relays")) .unwrap() - .as_vec(); + .as_slice(); assert_eq!(relays_tag[1], "ws://localhost:8055",); assert_eq!(relays_tag[2], "ws://localhost:8056",); } @@ -600,9 +599,9 @@ mod when_repo_not_previously_claimed { let web_tag = event .tags .iter() - .find(|t| t.as_vec()[0].eq("web")) + .find(|t| t.as_slice()[0].eq("web")) .unwrap() - .as_vec(); + .as_slice(); assert_eq!(web_tag[1], "https://exampleproject.xyz",); assert_eq!(web_tag[2], "https://gitworkshop.dev/123",); } @@ -622,9 +621,9 @@ mod when_repo_not_previously_claimed { let maintainers_tag = event .tags .iter() - .find(|t| t.as_vec()[0].eq("maintainers")) + .find(|t| t.as_slice()[0].eq("maintainers")) .unwrap() - .as_vec(); + .as_slice(); assert_eq!(maintainers_tag[1], TEST_KEY_1_KEYS.public_key().to_string()); } Ok(()) diff --git a/tests/ngit_push.rs b/tests/ngit_push.rs index eb452cd..3d89f6b 100644 --- a/tests/ngit_push.rs +++ b/tests/ngit_push.rs @@ -359,7 +359,7 @@ mod when_branch_is_checked_out { assert!(r55_events.iter().any(|e| { e.tags .iter() - .any(|t| t.as_vec()[0].eq("commit") && t.as_vec()[1].eq(&commit_id)) + .any(|t| t.as_slice()[0].eq("commit") && t.as_slice()[1].eq(&commit_id)) })); Ok(()) } diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs index 2aad232..0fe7a86 100644 --- a/tests/ngit_send.rs +++ b/tests/ngit_send.rs @@ -87,17 +87,17 @@ mod when_commits_behind_ask_to_proceed { fn is_cover_letter(event: &nostr::Event) -> bool { event.kind.eq(&Kind::GitPatch) && event - .tags() + .tags .iter() - .any(|t| t.as_vec()[1].eq("cover-letter")) + .any(|t| t.as_slice()[1].eq("cover-letter")) } fn is_patch(event: &nostr::Event) -> bool { event.kind.eq(&Kind::GitPatch) && !event - .tags() + .tags .iter() - .any(|t| t.as_vec()[1].eq("cover-letter")) + .any(|t| t.as_slice()[1].eq("cover-letter")) } fn prep_git_repo() -> Result { @@ -374,11 +374,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ assert_eq!( cover_letter_event - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("r")) + .find(|t| t.as_slice()[0].eq("r")) .unwrap() - .as_vec()[1], + .as_slice()[1], "9ee507fc4357d7ee16a5d8901bedcd103f23c17d" ); } @@ -394,10 +394,10 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( cover_letter_event - .tags() + .tags .iter() - .any(|t| t.as_vec()[0].eq("a") - && t.as_vec()[1].eq(&format!( + .any(|t| t.as_slice()[0].eq("a") + && t.as_slice()[1].eq(&format!( "{}:{TEST_KEY_1_PUBKEY_HEX}:{}", Kind::GitRepoAnnouncement, generate_repo_ref_event().identifier().unwrap() @@ -405,10 +405,10 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ ); assert!( cover_letter_event - .tags() + .tags .iter() - .any(|t| t.as_vec()[0].eq("a") - && t.as_vec()[1].eq(&format!( + .any(|t| t.as_slice()[0].eq("a") + && t.as_slice()[1].eq(&format!( "{}:{TEST_KEY_2_PUBKEY_HEX}:{}", Kind::GitRepoAnnouncement, generate_repo_ref_event().identifier().unwrap() @@ -423,11 +423,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ async fn p_tags_for_maintainers() -> Result<()> { let event = generate_repo_ref_event(); let maintainers = &event - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq(&"maintainers")) + .find(|t| t.as_slice()[0].eq(&"maintainers")) .unwrap() - .as_vec()[1..]; + .as_slice()[1..]; let (_, _, r53, r55, r56) = prep_run_create_proposal(true).await?; for relay in [&r53, &r55, &r56] { for m in maintainers { @@ -435,9 +435,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( cover_letter_event - .tags() + .tags .iter() - .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) }) + .any(|t| { t.as_slice()[0].eq("p") && t.as_slice()[1].eq(m) }) ); } } @@ -452,10 +452,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ let cover_letter_event: &nostr::Event = relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( - cover_letter_event - .tags() - .iter() - .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"cover-letter") }) + cover_letter_event.tags.iter().any(|t| { + t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"cover-letter") + }) ); } Ok(()) @@ -470,9 +469,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( cover_letter_event - .tags() + .tags .iter() - .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") }) + .any(|t| { t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"root") }) ); } Ok(()) @@ -489,11 +488,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ // branch-name tag assert_eq!( cover_letter_event - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) + .find(|t| t.as_slice()[0].eq("branch-name")) .unwrap() - .as_vec()[1], + .as_slice()[1], "feature" ); } @@ -511,11 +510,11 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ // branch-name tag assert_eq!( cover_letter_event - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("alt")) + .find(|t| t.as_slice()[0].eq("alt")) .unwrap() - .as_vec()[1], + .as_slice()[1], "git patch cover letter: exampletitle" ); } @@ -540,13 +539,13 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ most_recent_patch .tags .iter() - .any(|t| t.as_vec()[0].eq("r") && t.as_vec()[1].eq(COMMIT_ID)) + .any(|t| t.as_slice()[0].eq("r") && t.as_slice()[1].eq(COMMIT_ID)) ); assert!( most_recent_patch .tags .iter() - .any(|t| t.as_vec()[0].eq("commit") && t.as_vec()[1].eq(COMMIT_ID)) + .any(|t| t.as_slice()[0].eq("commit") && t.as_slice()[1].eq(COMMIT_ID)) ); Ok(()) } @@ -561,9 +560,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ most_recent_patch .tags .iter() - .find(|t| t.as_vec()[0].eq("parent-commit")) + .find(|t| t.as_slice()[0].eq("parent-commit")) .unwrap() - .as_vec()[1], + .as_slice()[1], COMMIT_PARENT_ID, ); Ok(()) @@ -572,8 +571,8 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ #[tokio::test] #[serial] async fn root_commit_as_r() -> Result<()> { - assert!(prep().await?.tags.iter().any(|t| t.as_vec()[0].eq("r") - && t.as_vec()[1].eq("9ee507fc4357d7ee16a5d8901bedcd103f23c17d"))); + assert!(prep().await?.tags.iter().any(|t| t.as_slice()[0].eq("r") + && t.as_slice()[1].eq("9ee507fc4357d7ee16a5d8901bedcd103f23c17d"))); Ok(()) } @@ -582,18 +581,18 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ async fn p_tags_for_maintainers() -> Result<()> { let event = generate_repo_ref_event(); let maintainers = &event - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq(&"maintainers")) + .find(|t| t.as_slice()[0].eq(&"maintainers")) .unwrap() - .as_vec()[1..]; + .as_slice()[1..]; for m in maintainers { assert!( prep() .await? - .tags() + .tags .iter() - .any(|t| { t.as_vec()[0].eq("p") && t.as_vec()[1].eq(m) }) + .any(|t| { t.as_slice()[0].eq("p") && t.as_slice()[1].eq(m) }) ); } Ok(()) @@ -603,16 +602,16 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ #[serial] async fn a_tag_for_repo_event_of_each_maintainer() -> Result<()> { assert!(prep().await?.tags.iter().any(|t| { - t.as_vec()[0].eq("a") - && t.as_vec()[1].eq(&format!( + t.as_slice()[0].eq("a") + && t.as_slice()[1].eq(&format!( "{}:{TEST_KEY_1_PUBKEY_HEX}:{}", Kind::GitRepoAnnouncement, generate_repo_ref_event().identifier().unwrap() )) })); assert!(prep().await?.tags.iter().any(|t| { - t.as_vec()[0].eq("a") - && t.as_vec()[1].eq(&format!( + t.as_slice()[0].eq("a") + && t.as_slice()[1].eq(&format!( "{}:{TEST_KEY_2_PUBKEY_HEX}:{}", Kind::GitRepoAnnouncement, generate_repo_ref_event().identifier().unwrap() @@ -629,9 +628,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .await? .tags .iter() - .find(|t| t.as_vec()[0].eq("description")) + .find(|t| t.as_slice()[0].eq("description")) .unwrap() - .as_vec()[1], + .as_slice()[1], "add t3.md" ); Ok(()) @@ -645,9 +644,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .await? .tags .iter() - .find(|t| t.as_vec()[0].eq("author")) + .find(|t| t.as_slice()[0].eq("author")) .unwrap() - .as_vec(), + .as_slice(), vec!["author", "Joe Bloggs", "joe.bloggs@pm.me", "0", "0"], ); Ok(()) @@ -661,9 +660,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .await? .tags .iter() - .find(|t| t.as_vec()[0].eq("committer")) + .find(|t| t.as_slice()[0].eq("committer")) .unwrap() - .as_vec(), + .as_slice(), vec!["committer", "Joe Bloggs", "joe.bloggs@pm.me", "0", "0"], ); Ok(()) @@ -677,9 +676,9 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .await? .tags .iter() - .find(|t| t.as_vec()[0].eq("alt")) + .find(|t| t.as_slice()[0].eq("alt")) .unwrap() - .as_vec(), + .as_slice(), vec!["alt", "git patch: add t3.md"], ); Ok(()) @@ -700,12 +699,14 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .tags .iter() .find(|t| { - t.as_vec()[0].eq("e") && t.as_vec().len().eq(&4) && t.as_vec()[3].eq("root") + t.as_slice()[0].eq("e") + && t.as_slice().len().eq(&4) + && t.as_slice()[3].eq("root") }) .unwrap(); assert_eq!( - root_event_tag.as_vec()[1], + root_event_tag.as_slice()[1], cover_letter_event.id.to_string() ); } @@ -724,13 +725,13 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .collect::>(); assert_eq!( patch_events[1] - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("e") - && t.as_vec().len().eq(&4) - && t.as_vec()[3].eq("reply")) + .find(|t| t.as_slice()[0].eq("e") + && t.as_slice().len().eq(&4) + && t.as_slice()[3].eq("reply")) .unwrap() - .as_vec()[1], + .as_slice()[1], patch_events[0].id.to_string(), ); } @@ -745,7 +746,7 @@ mod when_cover_letter_details_specified_with_range_of_head_2_sends_cover_letter_ .await? .tags .iter() - .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root")) + .any(|t| t.as_slice()[0].eq("t") && t.as_slice()[1].eq("root")) ); Ok(()) } @@ -1114,16 +1115,16 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c // first patch tagged as root assert!( patch_events[0] - .tags() + .tags .iter() - .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root")) + .any(|t| t.as_slice()[0].eq("t") && t.as_slice()[1].eq("root")) ); // second patch not tagged as root assert!( !patch_events[1] - .tags() + .tags .iter() - .any(|t| t.as_vec()[0].eq("t") && t.as_vec()[1].eq("root")) + .any(|t| t.as_slice()[0].eq("t") && t.as_slice()[1].eq("root")) ); } Ok(()) @@ -1143,11 +1144,11 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c // branch-name tag assert_eq!( patch_events[0] - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("branch-name")) + .find(|t| t.as_slice()[0].eq("branch-name")) .unwrap() - .as_vec()[1], + .as_slice()[1], "feature" ); } @@ -1167,13 +1168,13 @@ mod when_no_cover_letter_flag_set_with_range_of_head_2_sends_2_patches_without_c assert_eq!( patch_events[1] - .tags() + .tags .iter() - .find(|t| t.as_vec()[0].eq("e") - && t.as_vec().len().eq(&4) - && t.as_vec()[3].eq("root")) + .find(|t| t.as_slice()[0].eq("e") + && t.as_slice().len().eq(&4) + && t.as_slice()[3].eq("root")) .unwrap() - .as_vec()[1], + .as_slice()[1], patch_events[0].id.to_string(), ); } @@ -1572,9 +1573,9 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( cover_letter_event - .tags() + .tags .iter() - .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"root") }) + .any(|t| { t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"root") }) ); } Ok(()) @@ -1588,10 +1589,9 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let let cover_letter_event: &nostr::Event = relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( - cover_letter_event - .tags() - .iter() - .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") }) + cover_letter_event.tags.iter().any(|t| { + t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"revision-root") + }) ); } Ok(()) @@ -1606,15 +1606,15 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert_eq!( cover_letter_event - .tags() + .tags .iter() .find(|t| { - t.as_vec()[0].eq("e") - && t.as_vec().len().eq(&4) - && t.as_vec()[3].eq("reply") + t.as_slice()[0].eq("e") + && t.as_slice().len().eq(&4) + && t.as_slice()[3].eq("reply") }) .unwrap() - .as_vec()[1], + .as_slice()[1], // id of state nevent "431e58eb8e1b4e20292d1d5bbe81d5cfb042e1bc165de32eddfdd52245a4cce4", ); @@ -1639,12 +1639,12 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let .tags .iter() .find(|t| { - t.as_vec()[0].eq("e") - && t.as_vec().len().eq(&4) - && t.as_vec()[3].eq("root") + t.as_slice()[0].eq("e") + && t.as_slice().len().eq(&4) + && t.as_slice()[3].eq("root") }) .unwrap() - .as_vec()[1], + .as_slice()[1], cover_letter_event.id.to_string() ); } @@ -1754,10 +1754,10 @@ mod in_reply_to_mentions_issue { for relay in [&r53, &r55, &r56] { let cover_letter_event: &nostr::Event = relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); - assert!(cover_letter_event.tags().iter().any(|t| { - t.as_vec()[0].eq("e") - && t.as_vec()[1].eq(&get_pretend_issue_event().id.to_hex()) - && t.as_vec()[3].eq(&"mention") + assert!(cover_letter_event.tags.iter().any(|t| { + t.as_slice()[0].eq("e") + && t.as_slice()[1].eq(&get_pretend_issue_event().id.to_hex()) + && t.as_slice()[3].eq(&"mention") })); } Ok(()) @@ -1772,9 +1772,9 @@ mod in_reply_to_mentions_issue { relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); assert!( !cover_letter_event - .tags() + .tags .iter() - .any(|t| { t.as_vec()[0].eq("t") && t.as_vec()[1].eq(&"revision-root") }) + .any(|t| { t.as_slice()[0].eq("t") && t.as_slice()[1].eq(&"revision-root") }) ); } Ok(()) @@ -1877,18 +1877,18 @@ mod in_reply_to_mentions_npub_and_nprofile_which_get_mentioned_in_proposal_root for relay in [&r53, &r55, &r56] { let cover_letter_event: &nostr::Event = relay.events.iter().find(|e| is_cover_letter(e)).unwrap(); - assert!(cover_letter_event.tags().iter().any(|t| { - t.as_vec()[0].eq("p") - && t.as_vec()[1].eq(&nostr::Keys::parse( + assert!(cover_letter_event.tags.iter().any(|t| { + t.as_slice()[0].eq("p") + && t.as_slice()[1].eq(&nostr::Keys::parse( "nsec1q3c5xnsm5m4wgsrhwnz04p0d5mevkryyggqgdpa9jwulpq9gldhswgtxvq", ) .unwrap() .public_key() .to_hex()) })); - assert!(cover_letter_event.tags().iter().any(|t| { - t.as_vec()[0].eq("p") - && t.as_vec()[1].eq(&nostr::Keys::parse( + assert!(cover_letter_event.tags.iter().any(|t| { + t.as_slice()[0].eq("p") + && t.as_slice()[1].eq(&nostr::Keys::parse( "nsec1nx5ulvcndhcuu8k6q8fenw50l6y75sec7pj8vr0r68l6a44w3lqspvj02k", ) .unwrap() -- cgit v1.2.3