lib: Make signer context optional

This commit is contained in:
Erik Kundt
2024-01-04 10:45:28 +01:00
parent c0ad27397c
commit c3f79bbf55
4 changed files with 13 additions and 8 deletions
+1 -1
View File
@@ -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)?;
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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(),