Switch to published Radicle crates

This commit is contained in:
Erik Kundt
2023-08-10 22:38:38 +02:00
parent 682400f7cb
commit 7b0692df51
8 changed files with 121 additions and 329 deletions
Generated
+19 -283
View File
@@ -84,36 +84,6 @@ dependencies = [
"libc",
]
[[package]]
name = "anstream"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"is-terminal",
"utf8parse",
]
[[package]]
name = "anstyle"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
[[package]]
name = "anstyle-parse"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
version = "1.0.0"
@@ -123,16 +93,6 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "anstyle-wincon"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
dependencies = [
"anstyle",
"windows-sys",
]
[[package]]
name = "anyhow"
version = "1.0.72"
@@ -175,12 +135,6 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "base64"
version = "0.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d"
[[package]]
name = "base64ct"
version = "1.6.0"
@@ -297,23 +251,6 @@ dependencies = [
"inout",
]
[[package]]
name = "colorchoice"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
name = "colored"
version = "1.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f741c91823341bebf717d4c71bda820630ce065443b58bd1b7451af008355"
dependencies = [
"is-terminal",
"lazy_static",
"winapi",
]
[[package]]
name = "const-oid"
version = "0.9.4"
@@ -484,12 +421,6 @@ dependencies = [
"zeroize",
]
[[package]]
name = "diff"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
[[package]]
name = "digest"
version = "0.9.0"
@@ -619,18 +550,6 @@ dependencies = [
"libc",
]
[[package]]
name = "escargot"
version = "0.5.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "768064bd3a0e2bedcba91dc87ace90beea91acc41b6a01a3ca8e9aa8827461bf"
dependencies = [
"log",
"once_cell",
"serde",
"serde_json",
]
[[package]]
name = "fastrand"
version = "1.9.0"
@@ -775,24 +694,12 @@ dependencies = [
"subtle",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
[[package]]
name = "hermit-abi"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
[[package]]
name = "hmac"
version = "0.12.1"
@@ -835,16 +742,6 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.0.0"
@@ -852,7 +749,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
dependencies = [
"equivalent",
"hashbrown 0.14.0",
"hashbrown",
]
[[package]]
@@ -890,17 +787,6 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "is-terminal"
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi",
"rustix",
"windows-sys",
]
[[package]]
name = "isolang"
version = "2.3.0"
@@ -934,17 +820,6 @@ 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 = "keccak"
version = "0.1.4"
@@ -1028,12 +903,6 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "linked-hash-map"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "linux-raw-sys"
version = "0.4.5"
@@ -1105,12 +974,6 @@ dependencies = [
"serde",
]
[[package]]
name = "normalize-line-endings"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
[[package]]
name = "num-bigint-dig"
version = "0.8.4"
@@ -1275,16 +1138,6 @@ version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "pretty_assertions"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
dependencies = [
"diff",
"yansi",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@@ -1330,6 +1183,8 @@ dependencies = [
[[package]]
name = "radicle"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b56a9f71126b44b3768009f40a4c3f1f75325e7d2eb8ba95c5432ff844df6af3"
dependencies = [
"amplify",
"crossbeam-channel",
@@ -1354,50 +1209,11 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "radicle-cli"
version = "0.8.0"
dependencies = [
"anyhow",
"chrono",
"git-ref-format",
"json-color",
"lexopt",
"localtime",
"log",
"nonempty 0.8.1",
"radicle",
"radicle-cli-test",
"radicle-cob",
"radicle-crypto",
"radicle-git-ext",
"radicle-surf",
"radicle-term",
"serde",
"serde_json",
"serde_yaml",
"similar",
"thiserror",
"timeago 0.3.1",
"ureq",
"zeroize",
]
[[package]]
name = "radicle-cli-test"
version = "0.1.1"
dependencies = [
"escargot",
"log",
"pretty_assertions",
"shlex",
"snapbox",
"thiserror",
]
[[package]]
name = "radicle-cob"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf0ce7bd1c9f962813b0319faabfa19deae4dccac98154be050bfa21a1e121b6"
dependencies = [
"fastrand 1.9.0",
"git2",
@@ -1413,7 +1229,9 @@ dependencies = [
[[package]]
name = "radicle-crypto"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc9f1a3bc7e5e27099a8c9a2306dc8286c34c7db4ab0dfabf88e1b0d04d56a03"
dependencies = [
"amplify",
"cyphernet",
@@ -1430,7 +1248,9 @@ dependencies = [
[[package]]
name = "radicle-dag"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf2f9da8f20e47901022d5a58c0ed1953d0b1dcdfbbb1ac8eee28b93d888a258"
dependencies = [
"fastrand 1.9.0",
]
@@ -1452,6 +1272,8 @@ dependencies = [
[[package]]
name = "radicle-ssh"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4636c5c5d0610143ffbcf26008cdc1b7149644116acceadec62b749f8cebaaf"
dependencies = [
"byteorder",
"log",
@@ -1472,7 +1294,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b801a32980495a643bd380cc88f2074cf978862efbc8c085d5bd9f3be4caafd6"
dependencies = [
"anyhow",
"base64 0.13.1",
"base64",
"flate2",
"git2",
"log",
@@ -1486,6 +1308,8 @@ dependencies = [
[[package]]
name = "radicle-term"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "820fb6595467096019b19b10b0469b1b09d0acbe908a230bab8af7d381151fe7"
dependencies = [
"anstyle-query",
"anyhow",
@@ -1505,11 +1329,10 @@ dependencies = [
"anyhow",
"lexopt",
"radicle",
"radicle-cli",
"radicle-surf",
"radicle-term",
"textwrap 0.16.0",
"timeago 0.4.1",
"timeago",
"tui-realm-stdlib",
"tuirealm",
]
@@ -1731,24 +1554,12 @@ version = "1.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
dependencies = [
"indexmap 2.0.0",
"indexmap",
"itoa",
"ryu",
"serde",
]
[[package]]
name = "serde_yaml"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [
"indexmap 1.9.3",
"ryu",
"serde",
"yaml-rust",
]
[[package]]
name = "sha2"
version = "0.9.9"
@@ -1783,12 +1594,6 @@ dependencies = [
"keccak",
]
[[package]]
name = "shlex"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
[[package]]
name = "signature"
version = "1.6.4"
@@ -1799,12 +1604,6 @@ dependencies = [
"rand_core 0.6.4",
]
[[package]]
name = "similar"
version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
[[package]]
name = "siphasher"
version = "0.3.10"
@@ -1823,28 +1622,6 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
[[package]]
name = "snapbox"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6bccd62078347f89a914e3004d94582e13824d4e3d8a816317862884c423835"
dependencies = [
"anstream",
"anstyle",
"normalize-line-endings",
"similar",
"snapbox-macros",
]
[[package]]
name = "snapbox-macros"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eaaf09df9f0eeae82be96290918520214530e738a7fe5a351b0f24cf77c0ca31"
dependencies = [
"anstream",
]
[[package]]
name = "socks5-client"
version = "0.2.0"
@@ -2062,12 +1839,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "timeago"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ec32dde57efb15c035ac074118d7f32820451395f28cb0524a01d4e94983b26"
[[package]]
name = "timeago"
version = "0.4.1"
@@ -2187,20 +1958,6 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
[[package]]
name = "ureq"
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9"
dependencies = [
"base64 0.21.2",
"log",
"once_cell",
"serde",
"serde_json",
"url",
]
[[package]]
name = "url"
version = "2.4.0"
@@ -2212,12 +1969,6 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "utf8parse"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "vcpkg"
version = "0.2.15"
@@ -2408,21 +2159,6 @@ dependencies = [
"libc",
]
[[package]]
name = "yaml-rust"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]
[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]]
name = "zeroize"
version = "1.6.0"
+11 -9
View File
@@ -13,20 +13,22 @@ path = "src/main.rs"
[dependencies]
anyhow = { version = "1" }
lexopt = { version = "0.2" }
radicle = { version = "0.2.0" }
radicle-term = { version = "0.1.0" }
radicle-surf = { version = "0.14.0" }
timeago = { version = "0.4.1" }
textwrap = { version = "0.16.0" }
tuirealm = { version = "1.8.0", default-features = false, features = [ "with-termion" ] }
tui-realm-stdlib = { version = "1.2.0", default-features = false, features = [ "with-termion" ] }
[dependencies.radicle]
version = "0"
path = "../heartwood/radicle"
# [dependencies.radicle]
# version = "0"
# path = "../heartwood/radicle"
[dependencies.radicle-cli]
version = "0"
path = "../heartwood/radicle-cli"
# [dependencies.radicle-cli]
# version = "0"
# path = "../heartwood/radicle-cli"
[dependencies.radicle-term]
version = "0"
path = "../heartwood/radicle-term"
# [dependencies.radicle-term]
# version = "0"
# path = "../heartwood/radicle-term"
+32 -5
View File
@@ -2,12 +2,15 @@ use std::process;
use anyhow::{anyhow, Context};
use radicle::storage::ReadStorage;
use radicle_cli as cli;
use radicle::{
crypto::ssh::keystore::MemorySigner, prelude::Signer, profile::env::RAD_PASSPHRASE, Profile,
};
use radicle_term as term;
use radicle_tui::Window;
use radicle::storage::ReadStorage;
use term::{passphrase, spinner};
mod app;
pub const NAME: &str = "radicle-tui";
@@ -53,15 +56,39 @@ impl Options {
}
}
/// Get the default profile. Fails if there is no profile.
pub fn profile() -> Result<Profile, anyhow::Error> {
match Profile::load() {
Ok(profile) => Ok(profile),
Err(_) => Err(anyhow::anyhow!(
"Could not load radicle profile. To setup your radicle profile, run `rad auth`."
)),
}
}
/// Get the signer. First we try getting it from ssh-agent, otherwise we prompt the user.
pub fn signer(profile: &Profile) -> anyhow::Result<Box<dyn Signer>> {
if let Ok(signer) = profile.signer() {
return Ok(signer);
}
let passphrase = passphrase(RAD_PASSPHRASE)?;
let spinner = spinner("Unsealing key...");
let signer = MemorySigner::load(&profile.keystore, Some(passphrase))?;
spinner.finish();
Ok(signer.boxed())
}
fn execute() -> anyhow::Result<()> {
let _ = Options::from_env()?;
let (_, id) = radicle::rad::cwd()
.map_err(|_| anyhow!("this command must be run in the context of a project"))?;
let profile = cli::terminal::profile()?;
let profile = profile()?;
let signer = cli::terminal::signer(&profile)?;
let signer = signer(&profile)?;
let storage = &profile.storage;
let payload = storage
+25 -23
View File
@@ -1,7 +1,9 @@
pub mod format;
use radicle_surf;
use cli::terminal::format;
use radicle_cli as cli;
// use cli::terminal::format;
// use radicle_cli as cli;
use radicle::prelude::Did;
use radicle::storage::git::Repository;
@@ -10,7 +12,7 @@ use radicle::Profile;
use radicle::cob::issue::{Issue, IssueId, State as IssueState};
use radicle::cob::patch::{Patch, PatchId, State as PatchState};
use radicle::cob::{Tag, Timestamp};
use radicle::cob::{Label, Timestamp};
use tuirealm::props::{Color, Style};
use tuirealm::tui::text::{Span, Spans};
@@ -142,7 +144,7 @@ impl TableItem<8> for PatchItem {
let author = Cell::from(format_author(&self.author.did, self.author.is_you))
.style(Style::default().fg(theme.colors.browser_list_author));
let head = Cell::from(format::oid(self.head).item)
let head = Cell::from(format::oid(self.head))
.style(Style::default().fg(theme.colors.browser_patch_list_head));
let added = Cell::from(format!("{}", self.added))
@@ -151,7 +153,7 @@ impl TableItem<8> for PatchItem {
let removed = Cell::from(format!("{}", self.removed))
.style(Style::default().fg(theme.colors.browser_patch_list_removed));
let updated = Cell::from(format::timestamp(&self.timestamp).to_string())
let updated = Cell::from(format::timestamp(&self.timestamp))
.style(Style::default().fg(theme.colors.browser_list_timestamp));
[state, id, title, author, head, added, removed, updated]
@@ -172,8 +174,8 @@ pub struct IssueItem {
title: String,
/// Issue author.
author: AuthorItem,
/// Issue tags.
tags: Vec<Tag>,
/// Issue labels.
labels: Vec<Label>,
/// Issue assignees.
assignees: Vec<AuthorItem>,
/// Time when issue was opened.
@@ -197,8 +199,8 @@ impl IssueItem {
&self.author
}
pub fn tags(&self) -> &Vec<Tag> {
&self.tags
pub fn labels(&self) -> &Vec<Label> {
&self.labels
}
pub fn assignees(&self) -> &Vec<AuthorItem> {
@@ -222,12 +224,12 @@ impl From<(&Profile, &Repository, IssueId, Issue)> for IssueItem {
did: issue.author().id,
is_you: *issue.author().id == *profile.did(),
},
tags: issue.tags().cloned().collect(),
labels: issue.labels().cloned().collect(),
assignees: issue
.assigned()
.map(|did| AuthorItem {
did,
is_you: did == profile.did(),
did: *did,
is_you: *did == profile.did(),
})
.collect::<Vec<_>>(),
timestamp: issue.timestamp(),
@@ -249,8 +251,8 @@ impl TableItem<7> for IssueItem {
let author = Cell::from(format_author(&self.author.did, self.author.is_you))
.style(Style::default().fg(theme.colors.browser_list_author));
let tags = Cell::from(format_tags(&self.tags))
.style(Style::default().fg(theme.colors.browser_list_tags));
let labels = Cell::from(format_labels(&self.labels))
.style(Style::default().fg(theme.colors.browser_list_labels));
let assignees = self
.assignees
@@ -260,10 +262,10 @@ impl TableItem<7> for IssueItem {
let assignees = Cell::from(format_assignees(&assignees))
.style(Style::default().fg(theme.colors.browser_list_author));
let opened = Cell::from(format::timestamp(&self.timestamp).to_string())
let opened = Cell::from(format::timestamp(&self.timestamp))
.style(Style::default().fg(theme.colors.browser_list_timestamp));
[state, id, title, author, tags, assignees, opened]
[state, id, title, author, labels, assignees, opened]
}
}
@@ -289,7 +291,7 @@ impl ListItem for IssueItem {
Style::default().fg(theme.colors.property_divider_fg),
),
Span::styled(
format::timestamp(&self.timestamp).to_string(),
format::timestamp(&self.timestamp),
Style::default().fg(theme.colors.browser_list_timestamp),
),
]),
@@ -320,7 +322,7 @@ pub fn format_author(did: &Did, is_you: bool) -> String {
if is_you {
format!("{} (you)", format::did(did))
} else {
format!("{}", format::did(did))
format::did(did)
}
}
@@ -331,14 +333,14 @@ pub fn format_issue_state(state: &IssueState) -> (String, Color) {
}
}
pub fn format_tags(tags: &[Tag]) -> String {
pub fn format_labels(labels: &[Label]) -> String {
let mut output = String::new();
let mut tags = tags.iter().peekable();
let mut labels = labels.iter().peekable();
while let Some(tag) = tags.next() {
output.push_str(&tag.to_string());
while let Some(label) = labels.next() {
output.push_str(&label.to_string());
if tags.peek().is_some() {
if labels.peek().is_some() {
output.push(',');
}
}
+27
View File
@@ -0,0 +1,27 @@
use radicle::cob::{ObjectId, Timestamp};
use radicle::prelude::Did;
/// Format a git Oid.
pub fn oid(oid: impl Into<radicle::git::Oid>) -> String {
format!("{:.7}", oid.into())
}
/// Format a COB id.
pub fn cob(id: &ObjectId) -> String {
format!("{:.7}", id.to_string())
}
/// Format a DID.
pub fn did(did: &Did) -> String {
let nid = did.as_key().to_human();
format!("{}…{}", &nid[..7], &nid[nid.len() - 7..])
}
/// Format a timestamp.
pub fn timestamp(time: &Timestamp) -> String {
let fmt = timeago::Formatter::new();
let now = Timestamp::now();
let duration = std::time::Duration::from_secs(now.as_secs() - time.as_secs());
fmt.convert(duration)
}
+2 -2
View File
@@ -24,7 +24,7 @@ pub struct Colors {
pub browser_list_title: Color,
pub browser_list_description: Color,
pub browser_list_author: Color,
pub browser_list_tags: Color,
pub browser_list_labels: Color,
pub browser_list_comments: Color,
pub browser_list_timestamp: Color,
pub browser_patch_list_head: Color,
@@ -94,7 +94,7 @@ pub fn default_dark() -> Theme {
browser_list_title: COLOR_DEFAULT_FG,
browser_list_description: COLOR_DEFAULT_DARK,
browser_list_author: Color::Gray,
browser_list_tags: Color::LightBlue,
browser_list_labels: Color::LightBlue,
browser_list_comments: COLOR_DEFAULT_DARK_FG,
browser_list_timestamp: COLOR_DEFAULT_DARK,
browser_patch_list_head: Color::LightBlue,
+4 -4
View File
@@ -106,10 +106,10 @@ impl IssueHeader {
common::label(&id.to_string()).foreground(theme.colors.browser_list_description),
);
let tags = Property::new(
let labels = Property::new(
common::label("Tags").foreground(theme.colors.property_name_fg),
common::label(&cob::format_tags(item.tags()))
.foreground(theme.colors.browser_list_tags),
common::label(&cob::format_labels(item.labels()))
.foreground(theme.colors.browser_list_labels),
);
let assignees = Property::new(
@@ -135,7 +135,7 @@ impl IssueHeader {
Widget::new(title),
Widget::new(issue_id),
Widget::new(author),
Widget::new(tags),
Widget::new(labels),
Widget::new(assignees),
Widget::new(state),
],
+1 -3
View File
@@ -1,7 +1,5 @@
use radicle::cob::patch::{Patch, PatchId};
use radicle_cli::terminal::format;
use tuirealm::command::{Cmd, CmdResult};
use tuirealm::tui::layout::Rect;
use tuirealm::{AttrValue, Attribute, Frame, MockComponent, Props, State};
@@ -108,7 +106,7 @@ pub fn context(context: &Context, theme: &Theme, patch: (PatchId, Patch)) -> Wid
let (_, rev) = patch.latest();
let is_you = *patch.author().id() == context.profile().did();
let id = format::cob(&id);
let id = cob::format::cob(&id);
let title = patch.title();
let author = cob::format_author(patch.author().id(), is_you);
let comments = rev.discussion().len();