mirror of
https://seed.radicle.dev/rad:z39mP9rQAaGmERfUMPULfPUi473tY.git
synced 2026-11-04 02:40:59 +08:00
lib: Make signer context optional
This commit is contained in:
@@ -285,7 +285,7 @@ impl App {
|
||||
assignees: String,
|
||||
) -> Result<IssueId> {
|
||||
let repository = self.context.repository();
|
||||
let signer = self.context.signer();
|
||||
let signer = self.context.signer().as_ref().unwrap();
|
||||
|
||||
let labels = cob::parse_labels(labels)?;
|
||||
let assignees = cob::parse_assignees(assignees)?;
|
||||
|
||||
@@ -73,11 +73,11 @@ pub fn run(options: Options, _ctx: impl terminal::Context) -> anyhow::Result<()>
|
||||
let (_, id) = radicle::rad::cwd()
|
||||
.map_err(|_| anyhow!("this command must be run in the context of a project"))?;
|
||||
|
||||
let context = context::Context::new(id)?.with_patches();
|
||||
|
||||
match options.op {
|
||||
Operation::List => {
|
||||
log::enable("patch", "list", context.profile())?;
|
||||
let context = context::Context::new(id)?.with_patches();
|
||||
|
||||
log::enable(context.profile(), "patch", "list")?;
|
||||
|
||||
let patch_id = Window::default()
|
||||
.run(&mut list::App::new(context), 1000 / FPS)?
|
||||
|
||||
+8
-3
@@ -40,17 +40,17 @@ pub struct Context {
|
||||
repository: Repository,
|
||||
issues: Option<Vec<(IssueId, Issue)>>,
|
||||
patches: Option<Vec<(PatchId, Patch)>>,
|
||||
signer: Box<dyn Signer>,
|
||||
signer: Option<Box<dyn Signer>>,
|
||||
}
|
||||
|
||||
impl Context {
|
||||
pub fn new(id: Id) -> Result<Self, anyhow::Error> {
|
||||
let profile = profile()?;
|
||||
let signer = signer(&profile)?;
|
||||
let repository = profile.storage.repository(id).unwrap();
|
||||
let project = repository.identity_doc()?.project()?;
|
||||
let issues = None;
|
||||
let patches = None;
|
||||
let signer = None;
|
||||
|
||||
Ok(Self {
|
||||
id,
|
||||
@@ -75,6 +75,11 @@ impl Context {
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_signer(mut self) -> Self {
|
||||
self.signer = signer(&self.profile).ok();
|
||||
self
|
||||
}
|
||||
|
||||
pub fn profile(&self) -> &Profile {
|
||||
&self.profile
|
||||
}
|
||||
@@ -100,7 +105,7 @@ impl Context {
|
||||
}
|
||||
|
||||
#[allow(clippy::borrowed_box)]
|
||||
pub fn signer(&self) -> &Box<dyn Signer> {
|
||||
pub fn signer(&self) -> &Option<Box<dyn Signer>> {
|
||||
&self.signer
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ use log::LevelFilter;
|
||||
|
||||
use radicle::profile::Profile;
|
||||
|
||||
pub fn enable(cmd: &str, op: &str, profile: &Profile) -> Result<(), anyhow::Error> {
|
||||
pub fn enable(profile: &Profile, cmd: &str, op: &str) -> Result<(), anyhow::Error> {
|
||||
let logfile = format!(
|
||||
"{}/rad-tui-{}-{}.log",
|
||||
profile.home().path().to_string_lossy(),
|
||||
|
||||
Reference in New Issue
Block a user