diff options
Diffstat (limited to 'src/match_handler.rs')
| -rw-r--r-- | src/match_handler.rs | 18 | 
1 files changed, 15 insertions, 3 deletions
| diff --git a/src/match_handler.rs b/src/match_handler.rs index 599e8f1..428f99c 100644 --- a/src/match_handler.rs +++ b/src/match_handler.rs @@ -1,4 +1,7 @@ -use clap::ArgMatches; +use clap::{App, ArgMatches}; + +use std::env; +use std::path::Path;  use crate::actions::*;  use crate::errors::*; @@ -8,6 +11,7 @@ pub fn handle_matches(      version: &str,      state: &mut State,      config: &Config, +    app: &mut App,      matches: &ArgMatches,  ) -> Result<()> {      match matches.subcommand_name() { @@ -92,8 +96,16 @@ pub fn handle_matches(                  .subcommand_matches("completion")                  .chain_err(|| "unable to find subcommand matches")?;              match matches.value_of("SHELL") { -                Some(shell) => print_completion(shell), -                None => print_completion(""), +                Some(shell) => print_completion(app, shell), +                None => { +                    let shell_path_env = env::var("SHELL"); +                    if let Ok(p) = shell_path_env { +                        let shell_path = Path::new(&p); +                        if let Some(shell) = shell_path.file_name() { +                            print_completion(app, shell.to_str().chain_err(|| format!("Unable to convert {:?} to string", shell))?) +                        } +                    } +                }              }          }          Some("refresh") => update_rss(state), | 
