From f8e46a931abffa49df2b7e7843319f44b53277bd Mon Sep 17 00:00:00 2001 From: Minijackson Date: Tue, 4 Sep 2018 14:48:56 +0200 Subject: Better error reporting --- src/main.rs | 21 ++++++++++++++++----- src/utils.rs | 18 ++++++++++-------- 2 files changed, 26 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 8edc760..310fa1a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,7 @@ mod utils; use utils::*; use dbus_api::sink::OrgPulseAudioExtEqualizing1Equalizer; -use failure::Error; +use failure::{Error, ResultExt}; use structopt::StructOpt; use std::fs::File; @@ -115,6 +115,9 @@ fn main() { Ok(()) => (), Err(err) => { eprintln!("Error: {}", err); + for cause in err.iter_causes() { + eprintln!(" : {}", cause); + } std::process::exit(-1); } } @@ -133,8 +136,12 @@ fn start() -> Result<(), Error> { } fn reset(args: ResetCli) -> Result<(), Error> { - let conn = connect()?; - let conn_sink = get_equalized_sink(&conn)?; + let conn = connect().context( + "Could not connect to PulseAudio's D-Bus socket. Have you loaded the 'module-dbus-protocol' module?" + )?; + let conn_sink = get_equalized_sink(&conn).context( + "Could not find an equalized sink. Have you loaded the 'module-equalizer-sink' module?", + )?; let filter_rate = conn_sink.get_filter_sample_rate()?; let filter = Filter { preamp: 1f64, @@ -148,8 +155,12 @@ fn reset(args: ResetCli) -> Result<(), Error> { } fn load(args: LoadCli) -> Result<(), Error> { - let conn = connect()?; - let conn_sink = get_equalized_sink(&conn)?; + let conn = connect().context( + "Could not connect to PulseAudio's D-Bus socket. Have you loaded the 'module-dbus-protocol' module?" + )?; + let conn_sink = get_equalized_sink(&conn).context( + "Could not find an equalized sink. Have you loaded the 'module-equalizer-sink' module?", + )?; let filter = if args.file == "-" { let stdin = io::stdin(); diff --git a/src/utils.rs b/src/utils.rs index 66ccae4..24af366 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,19 +1,18 @@ -use ::{Filter, NoEqualizedSink}; +use {Filter, NoEqualizedSink}; use parsing::EqualizerApoParser; -use ::dbus_api::equalizing_manager::OrgPulseAudioExtEqualizing1Manager; -use ::dbus_api::server_lookup::OrgPulseAudioServerLookup1; -use ::dbus_api::sink::OrgPulseAudioExtEqualizing1Equalizer; +use dbus_api::equalizing_manager::OrgPulseAudioExtEqualizing1Manager; +use dbus_api::server_lookup::OrgPulseAudioServerLookup1; +use dbus_api::sink::OrgPulseAudioExtEqualizing1Equalizer; -use dbus::{BusType, Connection, ConnPath}; +use dbus::{BusType, ConnPath, Connection}; use failure::{Error, ResultExt}; use std::io; pub fn connect() -> Result { - let pulse_sock_path = - get_pulse_dbus_sock().context("While looking up PulseAudio's D-Bus socket path")?; + let pulse_sock_path = get_pulse_dbus_sock()?; info!("PulseAudio's D-Bus socket path is: {}", pulse_sock_path); trace!("Connecting to PulseAudio's D-Bus socket"); @@ -46,7 +45,10 @@ pub fn send_filter(conn_sink: &ConnPath<&Connection>, filter: Filter) -> Result< Ok(()) } -pub fn read_filter(file: &mut T) -> Result where T: io::Read { +pub fn read_filter(file: &mut T) -> Result +where + T: io::Read, +{ let mut buffer = String::new(); info!("Reading filter in GraphicEQ format from the command line"); -- cgit v1.2.3