Skip to content

Commit

Permalink
Add all pinentry args to the CLI
Browse files Browse the repository at this point in the history
  • Loading branch information
triarius committed Aug 31, 2024
1 parent b524a5a commit 855fb48
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
50 changes: 46 additions & 4 deletions src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,57 @@ use std::{fs, path::PathBuf, time::Duration};
#[allow(clippy::module_name_repetitions)]
#[derive(ClapSerde, Serialize, Deserialize, Debug, PartialEq, Eq)]
pub struct Config {
/// The X display to use for the dialog.
#[arg(short = 'D', long, env = "PINENTRY_DISPLAY", value_name = "DISPLAY")]
pub display: Option<String>,

/// The tty terminal node name
#[arg(short = 'T', long, env = "TTYNAME", value_name = "FILE")]
pub ttyname: Option<String>,

// The tty terminal type
#[arg(short = 'N', long, env = "TTYTYPE", value_name = "NAME")]
pub ttytype: Option<String>,

/// The `LC_CTYPE` locale category.
#[arg(short = 'C', long, env = "LC_CTYPE", value_name = "STRING")]
pub lc_ctype: Option<String>,

/// The `LC_MESSAGES` value.
#[arg(short = 'M', long, env = "LC_MESSAGES", value_name = "STRING")]
pub lc_messages: Option<String>,

/// Timeout in seconds for requests that show dialogs to the user.
/// E.g. GETPIN, CONFIRM, etc.
#[arg(short, long, value_name = "TIMEOUT_IN_SECONDS", value_parser = parse_duration, default_value = "300")]
pub timeout_in_seconds: Option<Duration>,
#[arg(
short = 'o',
long,
env = "ELEPHANTINE_TIMEOUT",
value_name = "SECS",
value_parser = parse_duration,
default_value = "300",
)]
pub timeout: Option<Duration>,

/// Grab keyboard only while the window is focused.
#[arg(short = 'g', long, env = "ELEPHANTINE_NO_LOCAL_GRAB")]
pub no_local_grab: bool,

/// Parent window ID (for partitioning).
#[arg(short = 'W', long, value_name = "WINDOW_ID")]
pub parent_wid: Option<String>,

/// Custom colors for the dialog.
#[arg(short = 'c', long, value_name = "STRING")]
pub colors: Option<String>,

/// The alert mode (none, beep, or flash).
#[arg(short = 'a', long, value_name = "STRING")]
pub ttyalert: Option<String>,

/// The command to run when a user input is required.
/// The command to run the dialog.
/// It must print the input to stdout.
#[arg(
short,
long,
value_name = "COMMAND",
value_delimiter = ' ',
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ mod test {

let mut output = std::io::Cursor::new(vec![]);
let mut listener = Listener::new(Config {
timeout_in_seconds: None,
timeout: None,
command: vec!["echo", "-n", "1234"]
.into_iter()
.map(std::string::ToString::to_string)
Expand Down

0 comments on commit 855fb48

Please sign in to comment.