diff options
author | Robin Krahl <robin.krahl@ireas.org> | 2019-01-11 01:24:16 +0000 |
---|---|---|
committer | Robin Krahl <robin.krahl@ireas.org> | 2019-01-11 02:25:54 +0100 |
commit | 02190c44f7072b4fdaca50836a583f955866f8de (patch) | |
tree | 46dd928ca34ff174b6393bb3ffc71c73c0ef3f4f /src/lib.rs | |
parent | 3efbb1ddc8b85f85621db9b37a0980ec88d2386d (diff) | |
download | dialog-rs-02190c44f7072b4fdaca50836a583f955866f8de.tar.gz dialog-rs-02190c44f7072b4fdaca50836a583f955866f8de.tar.bz2 |
Check the DIALOG environment variable in default_backend
This patch changes the logic in default_backend to respect the DIALOG
environment variable that may contain the name of the backend to use.
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -85,6 +85,8 @@ mod error; /// [`Backend`]: trait.Backend.html pub mod backends; +use std::env; + pub use crate::error::{Error, Result}; /// A dialog box that can be shown using a backend. @@ -335,9 +337,19 @@ impl DialogBox for Question { /// Creates a new instance of the default backend. /// -/// The current implementation always returns a [`Dialog`][] instance. +/// The following steps are performed to determine the default backend: +/// - If the `DIALOG` environment variable is set to a valid backend name, this backend is used. +/// A valid backend name is the name of a struct in the `backends` module implementing the +/// `Backend` trait in any case. +/// - Otherwise, a [`Dialog`][] instance is returned. /// /// [`Dialog`]: backends/struct.Dialog.html pub fn default_backend() -> Box<dyn backends::Backend> { + if let Ok(backend) = env::var("DIALOG") { + if let Some(backend) = backends::from_str(&backend) { + return backend; + } + } + Box::new(backends::Dialog::new()) } |