From 80401f89ae078d0414afc48d7f45da8eec246329 Mon Sep 17 00:00:00 2001 From: xphoniex Date: Mon, 14 Nov 2022 10:24:37 +0000 Subject: [PATCH] Add `rad-inspect` command Signed-off-by: xphoniex --- Cargo.lock | 13 ++ radicle-cli/Cargo.toml | 2 + radicle-cli/src/commands.rs | 2 + radicle-cli/src/commands/help.rs | 1 + radicle-cli/src/commands/inspect.rs | 201 ++++++++++++++++++++++++++++ radicle-cli/src/main.rs | 8 ++ radicle/src/identity/project.rs | 1 + radicle/src/rad.rs | 8 ++ 8 files changed, 236 insertions(+) create mode 100644 radicle-cli/src/commands/inspect.rs diff --git a/Cargo.lock b/Cargo.lock index fbcca0e7..cfbb0907 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -978,6 +978,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-color" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6dc8c55175cad7234a98cc3e31ba3009e276800271692ed3ad2c2f1c574b6e8" +dependencies = [ + "colored", + "serde", + "serde_json", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1498,9 +1509,11 @@ name = "radicle-cli" version = "0.8.0" dependencies = [ "anyhow", + "chrono", "console", "dialoguer", "indicatif", + "json-color", "lexopt", "log", "radicle", diff --git a/radicle-cli/Cargo.toml b/radicle-cli/Cargo.toml index 633bcc27..f319f97a 100644 --- a/radicle-cli/Cargo.toml +++ b/radicle-cli/Cargo.toml @@ -7,9 +7,11 @@ edition = "2021" [dependencies] anyhow = { version = "1" } +chrono = { version = "0.4", default-features = false, features = ["clock", "std"] } console = { version = "0.15" } dialoguer = { version = "0.10.0" } indicatif = { version = "0.16.2" } +json-color = { version = "0.7" } lexopt = { version = "0.2" } log = { version = "0.4", features = ["std"] } serde_json = { version = "1" } diff --git a/radicle-cli/src/commands.rs b/radicle-cli/src/commands.rs index abd1bc6e..b9424b4d 100644 --- a/radicle-cli/src/commands.rs +++ b/radicle-cli/src/commands.rs @@ -10,6 +10,8 @@ pub mod rad_edit; pub mod rad_help; #[path = "commands/init.rs"] pub mod rad_init; +#[path = "commands/inspect.rs"] +pub mod rad_inspect; #[path = "commands/ls.rs"] pub mod rad_ls; #[path = "commands/self.rs"] diff --git a/radicle-cli/src/commands/help.rs b/radicle-cli/src/commands/help.rs index b43ab075..094d85a3 100644 --- a/radicle-cli/src/commands/help.rs +++ b/radicle-cli/src/commands/help.rs @@ -21,6 +21,7 @@ const COMMANDS: &[Help] = &[ rad_untrack::HELP, rad_ls::HELP, rad_edit::HELP, + rad_inspect::HELP, HELP, ]; diff --git a/radicle-cli/src/commands/inspect.rs b/radicle-cli/src/commands/inspect.rs new file mode 100644 index 00000000..e48764e3 --- /dev/null +++ b/radicle-cli/src/commands/inspect.rs @@ -0,0 +1,201 @@ +#![allow(clippy::or_fun_call)] +use std::ffi::OsString; +use std::path::{Path, PathBuf}; +use std::process::{Command, Stdio}; +use std::str::FromStr; + +use anyhow::{anyhow, Context as _}; +use chrono::prelude::*; +use json_color::{Color, Colorizer}; + +use radicle::identity::project::{Doc, Untrusted}; +use radicle::identity::Id; +use radicle::storage::{ReadRepository, ReadStorage, WriteStorage}; + +use crate::terminal as term; +use crate::terminal::args::{Args, Error, Help}; + +pub const HELP: Help = Help { + name: "inspect", + description: "Inspect a radicle identity or project directory", + version: env!("CARGO_PKG_VERSION"), + usage: r#" +Usage + + rad inspect [