mirror of
https://github.com/soywod/himalaya.git
synced 2024-11-22 02:50:19 +00:00
fix editor command hanging, add --preview flag for msg read cmd
This commit is contained in:
parent
04e721d591
commit
203ed2f917
4 changed files with 25 additions and 13 deletions
9
Cargo.lock
generated
9
Cargo.lock
generated
|
@ -2445,8 +2445,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "keyring-lib"
|
name = "keyring-lib"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8dcc9433b6eaf33f2f6a8d3a53b598a5d0b8be224c41bd98d1ec936ef4d02d69"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"keyring",
|
"keyring",
|
||||||
"log",
|
"log",
|
||||||
|
@ -3233,10 +3231,10 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "process-lib"
|
name = "process-lib"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "fe824234b824573ff3a80ddf3a6b19e6ffba966798d071f280723ee02a7273ce"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
"log",
|
"log",
|
||||||
|
"once_cell",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
@ -3707,9 +3705,8 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "secret-lib"
|
name = "secret-lib"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d46e99ae858a1978ec3e6e887966514900229fc0df99935a2c61102854f9195e"
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
"keyring-lib",
|
"keyring-lib",
|
||||||
"log",
|
"log",
|
||||||
"process-lib",
|
"process-lib",
|
||||||
|
|
|
@ -104,7 +104,8 @@ default-features = false
|
||||||
path = "/home/soywod/sourcehut/pimalaya/email"
|
path = "/home/soywod/sourcehut/pimalaya/email"
|
||||||
|
|
||||||
[dependencies.keyring-lib]
|
[dependencies.keyring-lib]
|
||||||
version = "=0.1.0"
|
# version = "=0.1.0"
|
||||||
|
path = "/home/soywod/sourcehut/pimalaya/keyring"
|
||||||
|
|
||||||
[dependencies.mail-builder]
|
[dependencies.mail-builder]
|
||||||
version = "0.3"
|
version = "0.3"
|
||||||
|
@ -114,7 +115,8 @@ version = "0.3"
|
||||||
path = "/home/soywod/sourcehut/pimalaya/oauth"
|
path = "/home/soywod/sourcehut/pimalaya/oauth"
|
||||||
|
|
||||||
[dependencies.process-lib]
|
[dependencies.process-lib]
|
||||||
version = "=0.1.0"
|
# version = "=0.1.0"
|
||||||
|
path = "/home/soywod/sourcehut/pimalaya/process"
|
||||||
|
|
||||||
[dependencies.mml-lib]
|
[dependencies.mml-lib]
|
||||||
# version = "=1.0.1"
|
# version = "=1.0.1"
|
||||||
|
@ -123,7 +125,8 @@ features = ["compiler", "interpreter"]
|
||||||
path = "/home/soywod/sourcehut/pimalaya/mml"
|
path = "/home/soywod/sourcehut/pimalaya/mml"
|
||||||
|
|
||||||
[dependencies.secret-lib]
|
[dependencies.secret-lib]
|
||||||
version = "=0.1.0"
|
# version = "=0.1.0"
|
||||||
|
path = "/home/soywod/sourcehut/pimalaya/secret"
|
||||||
|
|
||||||
[dependencies.serde]
|
[dependencies.serde]
|
||||||
version = "1.0"
|
version = "1.0"
|
||||||
|
|
|
@ -11,7 +11,9 @@ use crate::{
|
||||||
|
|
||||||
/// Read a message.
|
/// Read a message.
|
||||||
///
|
///
|
||||||
/// This command allows you to read a message.
|
/// This command allows you to read a message. When reading a message,
|
||||||
|
/// the "seen" flag is automatically applied to the corresponding
|
||||||
|
/// envelope. To prevent this behaviour, use the --preview flag.
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct MessageReadCommand {
|
pub struct MessageReadCommand {
|
||||||
#[command(flatten)]
|
#[command(flatten)]
|
||||||
|
@ -20,6 +22,11 @@ pub struct MessageReadCommand {
|
||||||
#[command(flatten)]
|
#[command(flatten)]
|
||||||
pub envelopes: EnvelopeIdsArgs,
|
pub envelopes: EnvelopeIdsArgs,
|
||||||
|
|
||||||
|
/// Read the message without applying the "seen" flag to its
|
||||||
|
/// corresponding envelope.
|
||||||
|
#[arg(long, short)]
|
||||||
|
pub preview: bool,
|
||||||
|
|
||||||
/// Read the raw version of the given message.
|
/// Read the raw version of the given message.
|
||||||
///
|
///
|
||||||
/// The raw message represents the headers and the body as it is
|
/// The raw message represents the headers and the body as it is
|
||||||
|
@ -79,7 +86,11 @@ impl MessageReadCommand {
|
||||||
let backend = Backend::new(toml_account_config, account_config.clone(), false).await?;
|
let backend = Backend::new(toml_account_config, account_config.clone(), false).await?;
|
||||||
|
|
||||||
let ids = &self.envelopes.ids;
|
let ids = &self.envelopes.ids;
|
||||||
let emails = backend.get_messages(&folder, &ids).await?;
|
let emails = if self.preview {
|
||||||
|
backend.peek_messages(&folder, &ids).await
|
||||||
|
} else {
|
||||||
|
backend.get_messages(&folder, &ids).await
|
||||||
|
}?;
|
||||||
|
|
||||||
let mut glue = "";
|
let mut glue = "";
|
||||||
let mut bodies = String::default();
|
let mut bodies = String::default();
|
||||||
|
|
|
@ -6,7 +6,7 @@ use email::{
|
||||||
};
|
};
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use mml::MmlCompilerBuilder;
|
use mml::MmlCompilerBuilder;
|
||||||
use process::Cmd;
|
use process::SingleCmd;
|
||||||
use std::{env, fs};
|
use std::{env, fs};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -23,7 +23,8 @@ pub async fn open_with_tpl(tpl: String) -> Result<String> {
|
||||||
|
|
||||||
debug!("open editor");
|
debug!("open editor");
|
||||||
let editor = env::var("EDITOR").context("cannot get editor from env var")?;
|
let editor = env::var("EDITOR").context("cannot get editor from env var")?;
|
||||||
Cmd::from(format!("{editor} {}", &path.to_string_lossy()))
|
SingleCmd::from(format!("{editor} {}", &path.to_string_lossy()))
|
||||||
|
.with_output_piped(false)
|
||||||
.run()
|
.run()
|
||||||
.await
|
.await
|
||||||
.context("cannot launch editor")?;
|
.context("cannot launch editor")?;
|
||||||
|
|
Loading…
Reference in a new issue