Radish alpha
r
rad:z39mP9rQAaGmERfUMPULfPUi473tY
Radicle terminal user interface
Radicle
Git
Update to most recent Radicle crates
Merged did:key:z6MkswQE...2C1V opened 1 year ago
4 files changed +112 -75 263146b8 3f96409e
modified Cargo.lock
@@ -81,9 +81,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"

[[package]]
name = "amplify"
-
version = "4.5.0"
+
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8629db306c0bbeb0a402e2918bdcf0026b5ddb24c46460f3bf5410b350d98710"
+
checksum = "9e711289a6cb28171b4f0e6c8019c69ff9476050508dc082167575d458ff74d0"
dependencies = [
 "amplify_derive",
 "amplify_num",
@@ -105,9 +105,9 @@ dependencies = [

[[package]]
name = "amplify_num"
-
version = "0.5.1"
+
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9681187211554ab98f138ba159e90861b136c20afc680dcff2ba82d020721e27"
+
checksum = "04c009c5c4de814911b177e2ea59e4930bb918978ed3cce4900d846a6ceb0838"
dependencies = [
 "wasm-bindgen",
]
@@ -517,9 +517,9 @@ dependencies = [

[[package]]
name = "cypheraddr"
-
version = "0.3.0"
+
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e64c60d980ec55006d2a1229923a5fa73046de824455569cccb6cb2e4a64ae31"
+
checksum = "ba5c54d2ad4ab9941383519471b75d12abc1a7b4779265e233168f2703a730d9"
dependencies = [
 "amplify",
 "base32",
@@ -529,9 +529,9 @@ dependencies = [

[[package]]
name = "cyphergraphy"
-
version = "0.2.0"
+
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3c8e45921460ef188da680742fd641f9b2a85d0de6bce12ce26e64c0f4913b41"
+
checksum = "b67c16c8ef5ddcdab57aab83fd8e770540ea3682ccdae09642c63575b0da2184"
dependencies = [
 "amplify",
 "ec25519",
@@ -539,9 +539,9 @@ dependencies = [

[[package]]
name = "cyphernet"
-
version = "0.4.1"
+
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2f8be7cc6e24cfea2c126bddaaddfd3c3054865b4cd52882eae9dfea6ee8aac1"
+
checksum = "ac949369884a7a1d802cc669821269c707be8cec4d65043382e253733d2e62e1"
dependencies = [
 "cypheraddr",
 "cyphergraphy",
@@ -778,6 +778,15 @@ dependencies = [
]

[[package]]
+
name = "fxhash"
+
version = "0.2.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
+
dependencies = [
+
 "byteorder",
+
]
+

+
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -963,17 +972,17 @@ dependencies = [

[[package]]
name = "inquire"
-
version = "0.6.2"
+
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c33e7c1ddeb15c9abcbfef6029d8e29f69b52b6d6c891031b88ed91b5065803b"
+
checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a"
dependencies = [
-
 "bitflags 1.3.2",
+
 "bitflags 2.4.1",
 "dyn-clone",
-
 "lazy_static",
+
 "fxhash",
 "newline-converter",
+
 "once_cell",
 "tempfile",
-
 "termion 1.5.6",
-
 "thiserror",
+
 "termion 2.0.3",
 "unicode-segmentation",
 "unicode-width",
]
@@ -1176,9 +1185,9 @@ dependencies = [

[[package]]
name = "newline-converter"
-
version = "0.2.2"
+
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f"
+
checksum = "47b6b097ecb1cbfed438542d16e84fd7ad9b0c76c8a65b7f9039212a3d14dc7f"
dependencies = [
 "unicode-segmentation",
]
@@ -1563,9 +1572,9 @@ dependencies = [

[[package]]
name = "radicle"
-
version = "0.9.0"
+
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "030f82578c59d0f1d4c5ceaede44d5f8b9c8193628e55d28025d7b540057c50d"
+
checksum = "c2c96b3901ca5b7bfe06da3fb18105c32dc5f9f5c48a217cfc7104385a687195"
dependencies = [
 "amplify",
 "base64 0.21.7",
@@ -1597,9 +1606,9 @@ dependencies = [

[[package]]
name = "radicle-cli"
-
version = "0.9.0"
+
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "89fbe33c5d79e748716bcce09df5220622ee205209a3dd81fe840a631df7a59b"
+
checksum = "5347c326bec844b7ced9c8f8bcfec88104ea2066c029d49d5128dd09a4148c50"
dependencies = [
 "anyhow",
 "chrono",
@@ -1613,7 +1622,7 @@ dependencies = [
 "radicle-cob",
 "radicle-crypto",
 "radicle-git-ext",
-
 "radicle-surf 0.19.0",
+
 "radicle-surf 0.21.0",
 "radicle-term",
 "serde",
 "serde_json",
@@ -1631,6 +1640,7 @@ dependencies = [
 "tree-sitter-json",
 "tree-sitter-md",
 "tree-sitter-python",
+
 "tree-sitter-ruby",
 "tree-sitter-rust",
 "tree-sitter-toml",
 "tree-sitter-typescript",
@@ -1639,9 +1649,9 @@ dependencies = [

[[package]]
name = "radicle-cli-test"
-
version = "0.9.0"
+
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ed1637aa46c99b5296103edf1ef30aead1b6281bd9206aee0bb0e9cc0c0f7707"
+
checksum = "d5bbd1dc7cb2801693d6d00f937021adb0d398e9fec6b998e4830ebba32fdfdd"
dependencies = [
 "escargot",
 "log",
@@ -1654,9 +1664,9 @@ dependencies = [

[[package]]
name = "radicle-cob"
-
version = "0.9.0"
+
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dd166e24c3fbda9fe524ff49337e34112f3cb9899ad1ef4f2d258bc02105a278"
+
checksum = "36d8268661b22cec768bdf687aa9d98db2dcd9c8f974e8208f8658244074b539"
dependencies = [
 "fastrand",
 "git2",
@@ -1673,9 +1683,9 @@ dependencies = [

[[package]]
name = "radicle-crypto"
-
version = "0.9.0"
+
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f446b5e3e6fc476f04c914c87a3c2a2449430dfb246d2d1877cff7691efa6232"
+
checksum = "fb86116dc5d9daa0d0b8e07fb71c9887d537b3fecebffc0cde6624b07176c711"
dependencies = [
 "amplify",
 "cyphernet",
@@ -1716,6 +1726,16 @@ dependencies = [
]

[[package]]
+
name = "radicle-signals"
+
version = "0.9.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0633d483e40eb96a8e57264727f1c4f0d188348eb5c155cf1369469c121c6c87"
+
dependencies = [
+
 "crossbeam-channel",
+
 "libc",
+
]
+

+
[[package]]
name = "radicle-ssh"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1753,9 +1773,9 @@ dependencies = [

[[package]]
name = "radicle-surf"
-
version = "0.19.0"
+
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fade014fab67a7bdb816e4cf821611af5f0bc55c6eb1018561027ba6ba3b6b28"
+
checksum = "5fae23233ff8be809a822d923e93e56e5282179039b19f345f39f592c1ca0765"
dependencies = [
 "anyhow",
 "base64 0.13.1",
@@ -1772,17 +1792,21 @@ dependencies = [

[[package]]
name = "radicle-term"
-
version = "0.9.0"
+
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "71c8c75357d278dcf3058feb362b5920b767559f487ee5cf50da86bd92c60cb9"
+
checksum = "a46c7b39b0fabe11cbb1f697979f1e1021122aef76b476f5d385c48a02400310"
dependencies = [
 "anstyle-query",
 "anyhow",
+
 "crossbeam-channel",
 "git2",
 "inquire",
 "libc",
 "once_cell",
+
 "radicle-signals",
+
 "shlex",
 "termion 3.0.0",
+
 "thiserror",
 "unicode-display-width",
 "unicode-segmentation",
 "zeroize",
@@ -2185,9 +2209,9 @@ dependencies = [

[[package]]
name = "socks5-client"
-
version = "0.3.0"
+
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c0c27f4545b26cb6e14990e7477c38a8b493b2e8738166fa2a1f5f174ef3fa5f"
+
checksum = "ffc7dcf6fab1d65d82d633006a4cc658d76ce436e01cf1a7c71873c0eeba324c"
dependencies = [
 "amplify",
 "cypheraddr",
@@ -2380,13 +2404,13 @@ dependencies = [

[[package]]
name = "termion"
-
version = "1.5.6"
+
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "077185e2eac69c3f8379a4298e1e07cd36beb962290d4a51199acf0fdc10607e"
+
checksum = "c4648c7def6f2043b2568617b9f9b75eae88ca185dbc1f1fda30e95a85d49d7d"
dependencies = [
 "libc",
+
 "libredox",
 "numtoa",
-
 "redox_syscall 0.2.16",
 "redox_termios",
]

@@ -2654,6 +2678,16 @@ dependencies = [
]

[[package]]
+
name = "tree-sitter-ruby"
+
version = "0.20.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "44d50ef383469df8485f024c5fb01faced8cb90368192a7ba02605b43b2427fe"
+
dependencies = [
+
 "cc",
+
 "tree-sitter",
+
]
+

+
[[package]]
name = "tree-sitter-rust"
version = "0.20.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
modified Cargo.toml
@@ -23,15 +23,15 @@ required-features = ["bin"]

[dependencies]
anyhow = { version = "1" }
-
inquire = { version = "0.6.2", default-features = false, features = ["termion", "editor"] }
+
inquire = { version = "0.7.4", default-features = false, features = ["termion", "editor"] }
lexopt = { version = "0.3.0" }
fuzzy-matcher = "0.3.7"
libc = { version = "^0.2" }
log = { version = "0.4.19" }
nom = { version = "^7.1.0" }
-
radicle = { version = "0.9.0" }
-
radicle-term = { version = "0.9.0" }
-
radicle-cli = { version = "0.9.0" }
+
radicle = { version = "0.11.0" }
+
radicle-term = { version = "0.10.0" }
+
radicle-cli = { version = "0.10.0" }
radicle-surf = { version = "0.18.0" }
ratatui = { version = "0.26.1", default-features = false, features = ["all-widgets", "termion"] }
simple-logging = { version = "2.0.2" }
modified src/context.rs
@@ -2,7 +2,7 @@ use std::fmt::Display;

use radicle::cob::issue::{Issue, IssueId};
use radicle::cob::patch::{Patch, PatchId};
-
use radicle::crypto::ssh::keystore::{Keystore, MemorySigner};
+
use radicle::crypto::ssh::keystore::MemorySigner;
use radicle::crypto::Signer;
use radicle::identity::{Project, RepoId};
use radicle::node::notifications::Notification;
@@ -11,15 +11,15 @@ use radicle::storage::git::Repository;
use radicle::storage::{ReadRepository, ReadStorage};
use radicle::Profile;

+
use radicle_cli::terminal::io::PassphraseValidator;
use radicle_term as term;
-
use term::{passphrase, spinner, Passphrase};
-

-
use inquire::validator;
+
use term::{passphrase, spinner};

use super::cob::inbox;

/// Git revision parameter. Supports extended SHA-1 syntax.
#[derive(Debug, Clone, PartialEq, Eq)]
+

pub struct Rev(String);

impl From<String> for Rev {
@@ -130,34 +130,34 @@ impl Context {
    }
}

-
/// Validates secret key passphrases.
-
#[derive(Clone)]
-
pub struct PassphraseValidator {
-
    keystore: Keystore,
-
}
-

-
impl PassphraseValidator {
-
    /// Create a new validator.
-
    pub fn new(keystore: Keystore) -> Self {
-
        Self { keystore }
-
    }
-
}
-

-
impl inquire::validator::StringValidator for PassphraseValidator {
-
    fn validate(
-
        &self,
-
        input: &str,
-
    ) -> Result<validator::Validation, inquire::error::CustomUserError> {
-
        let passphrase = Passphrase::from(input.to_owned());
-
        if self.keystore.is_valid_passphrase(&passphrase)? {
-
            Ok(validator::Validation::Valid)
-
        } else {
-
            Ok(validator::Validation::Invalid(
-
                validator::ErrorMessage::from("Invalid passphrase, please try again"),
-
            ))
-
        }
-
    }
-
}
+
// /// Validates secret key passphrases.
+
// #[derive(Clone)]
+
// pub struct PassphraseValidator {
+
//     keystore: Keystore,
+
// }
+

+
// impl PassphraseValidator {
+
//     /// Create a new validator.
+
//     pub fn new(keystore: Keystore) -> Self {
+
//         Self { keystore }
+
//     }
+
// }
+

+
// impl inquire::validator::StringValidator for PassphraseValidator {
+
//     fn validate(
+
//         &self,
+
//         input: &str,
+
//     ) -> Result<validator::Validation, inquire::error::CustomUserError> {
+
//         let passphrase = Passphrase::from(input.to_owned());
+
//         if self.keystore.is_valid_passphrase(&passphrase)? {
+
//             Ok(validator::Validation::Valid)
+
//         } else {
+
//             Ok(validator::Validation::Invalid(
+
//                 validator::ErrorMessage::from("Invalid passphrase, please try again"),
+
//             ))
+
//         }
+
//     }
+
// }

/// Get the signer. First we try getting it from ssh-agent, otherwise we prompt the user,
/// if we're connected to a TTY.
modified src/ui/format.rs
@@ -1,3 +1,5 @@
+
use std::time::{SystemTime, UNIX_EPOCH};
+

use radicle::cob::Label;
use radicle::cob::{ObjectId, Timestamp};
use radicle::crypto::PublicKey;
@@ -26,7 +28,8 @@ pub fn did(did: &Did) -> String {
/// Format a timestamp.
pub fn timestamp(time: &Timestamp) -> String {
    let fmt = timeago::Formatter::new();
-
    let now = Timestamp::now();
+
    let now = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
+
    let now = Timestamp::from_secs(now.as_secs());
    let duration = std::time::Duration::from_secs(now.as_secs() - time.as_secs());

    fmt.convert(duration)