WFSVSG4PGNXTI6C6OKUQ3NOOFH7R3AU4A75AI67SZETYNLLAZPMAC ZSXDIW6H2P5XTW2HJNDNXD2CWDU2QKIDPCUYIPOSNJER64P3JB6QC WSQFCJ4QMS5G3TQO76Z2YHZJTIBIC6GYLNJKUABM2QRNNRHLYIWQC YBZK2M5ELOYR75XDCP7Z5OB4BM3R4KUOZKTMWSK7D7HBIW2AGCIQC 3QMGOJFEK5BU7VLPXKL2FBPEAVPSPNMHHRVFWIH36XMKIIQC3GAQC 2MZOVOEP2UL5GFIZDBVIIDAS5XPY75RGCIBNB65ZRWHQHVAWH7FQC B2MSSEJB4GIBFA6F2HRMK7FXUHJBZIZFK6NOHY7YZUSHRB53URGQC T2HK3ZSDLLLGHROM77MND4UZF663WSHT5J2CT7ZMXDH6MMIZFOAQC LSRFYRWWQXJ2LVGZ7FWF5O57E4RK45EE6NWLNTRSRO5M7TFW7PZAC YQSLDBVSLMXMWYHDASV2QOSYZMMLV2T2QT2IWJT6WYWQKOL2MKFQC FKTISISENWXRFIQHUBCSWQAAN7OWUWIOD6R64YEQOBZ6VENZUWYQC K7M77GF5ILC4KKKYPTLZRZ2OND7DOQDQNRYKM3N6XV2DMJURYA3QC VEN5WJYRT23IT77JAAZ5CJRSW3GUTTNMAECT3WVTHQA34HI4646AC P47FL33V2VY4NC34OML7GYJD2SJWWLYO6KMCG35TFREFG4HKGARQC F2QYIRKBFYFWSTB7Z5CNGSZVYI6XQO3MHPUHJLBHPGLIOG7UNVNQC CK2R6STAMMOQCX3HD676VNU6LCNG4BSIV2ZSEEFWVUWW4TPFW73AC KUHZYHYVA5XG437YCSHDCTPTAYNQD6QUO77I4UWOWGFLWMEVCPNQC FTI67CGF4MMPDFA6YJN6UKOADQLFAECKGYPTWSPSALVQK76BJMJAC IA2CJ4HDSST6MPDLX2FVE2ZZR7EP5O6AIAUFGZIMWJ6NODVMKOKAC AIF5IVL7B5S2X3N4RLS6GNKUCASQZPOH6NCVGECUFHQ5ZUJVDU6QC WOYAD3FWIOSSZLM76DX6ZCRG6YILONICJ25UYMOJ52BGRLRPGRGAC * Ignore commands starting with ' ' (space). This should make iteasier to not record sensitive commands. This is configurable in aconfiguration file with the option `ignore_space`. By default thisis enabled.* Add configuration option `log_level` to change the default log levelto run under.
## ConfigurationThere is also a way to configure `histdb-rs`. By default the configuration is stored under `$HOME/.config/histdb-rs/config.toml`. A different path can be specified using the `--config-path` option.The default configuration looks like this:```toml# When true will not save commands that start with a space.# Default: trueignore_space = true# The log level to run under.# Default: Warnlog_level = "Warn"```
# When true will not save commands that start with a space.# Default: trueignore_space = true# The log level to run under.# Default: Warnlog_level = "Warn"
use log::{debug,LevelFilter,};use std::path::Path;use thiserror::Error;use serde::Deserialize;#[derive(Debug, Error)]pub enum Error {#[error("can not read config file: {0}")]ReadFile(std::io::Error),#[error("can not parse config file: {0}")]ParseConfig(toml::de::Error),}#[derive(Debug, Deserialize)]#[serde(default)]pub struct Config {/// Then true disables recording commands that start with a spacepub ignore_space: bool,/// The log level to run underpub log_level: LevelFilter,}impl Default for Config {fn default() -> Self {Self {ignore_space: true,log_level: LevelFilter::Warn,}}}impl Config {pub fn open(path: impl AsRef<Path>) -> Result<Self, Error> {if !path.as_ref().is_file() {debug!("no config file found using default");return Ok(Self::default());}let config_data = std::fs::read(path).map_err(Error::ReadFile)?;let config = toml::de::from_slice(&config_data).map_err(Error::ParseConfig)?;Ok(config)}}
pub fn zsh_add_history(command: String, socket_path: PathBuf) -> Result<(), Error> {let data = CommandStart::from_env(command)?;client::new(socket_path).send(&Message::CommandStart(data))?;
pub fn zsh_add_history(config: &config::Config,command: String,socket_path: PathBuf,) -> Result<(), Error> {if config.ignore_space && command.starts_with(' ') {debug!("not recording a command starting with a space");} else {let data = CommandStart::from_env(command)?;client::new(socket_path).send(&Message::CommandStart(data))?;}