Implement basic logging
This commit is contained in:
parent
0118dd0073
commit
abaa204300
167
Cargo.lock
generated
167
Cargo.lock
generated
@ -160,7 +160,7 @@ dependencies = [
|
|||||||
"iana-time-zone",
|
"iana-time-zone",
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"time",
|
"time 0.1.45",
|
||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
@ -278,6 +278,12 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "deranged"
|
||||||
|
version = "0.3.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "directories"
|
name = "directories"
|
||||||
version = "5.0.1"
|
version = "5.0.1"
|
||||||
@ -430,6 +436,12 @@ dependencies = [
|
|||||||
"windows-sys 0.48.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jrny-save"
|
name = "jrny-save"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
@ -534,6 +546,16 @@ dependencies = [
|
|||||||
"windows-sys 0.45.0",
|
"windows-sys 0.45.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nu-ansi-term"
|
||||||
|
version = "0.46.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
|
||||||
|
dependencies = [
|
||||||
|
"overload",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.16"
|
version = "0.2.16"
|
||||||
@ -555,6 +577,12 @@ version = "0.2.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
|
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "overload"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "owo-colors"
|
name = "owo-colors"
|
||||||
version = "3.5.0"
|
version = "3.5.0"
|
||||||
@ -590,6 +618,12 @@ version = "1.0.14"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
|
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pin-project-lite"
|
||||||
|
version = "0.2.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.66"
|
version = "1.0.66"
|
||||||
@ -680,6 +714,21 @@ version = "1.2.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.183"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sharded-slab"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "signal-hook"
|
name = "signal-hook"
|
||||||
version = "0.3.17"
|
version = "0.3.17"
|
||||||
@ -773,6 +822,16 @@ dependencies = [
|
|||||||
"syn 2.0.27",
|
"syn 2.0.27",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thread_local"
|
||||||
|
version = "1.1.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"once_cell",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.1.45"
|
version = "0.1.45"
|
||||||
@ -784,6 +843,103 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time"
|
||||||
|
version = "0.3.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
|
||||||
|
dependencies = [
|
||||||
|
"deranged",
|
||||||
|
"itoa",
|
||||||
|
"serde",
|
||||||
|
"time-core",
|
||||||
|
"time-macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-core"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "time-macros"
|
||||||
|
version = "0.2.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
|
||||||
|
dependencies = [
|
||||||
|
"time-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing"
|
||||||
|
version = "0.1.37"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tracing-attributes",
|
||||||
|
"tracing-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-appender"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-channel",
|
||||||
|
"time 0.3.25",
|
||||||
|
"tracing-subscriber",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-attributes"
|
||||||
|
version = "0.1.26"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.27",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-core"
|
||||||
|
version = "0.1.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"valuable",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-log"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"log",
|
||||||
|
"tracing-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-subscriber"
|
||||||
|
version = "0.3.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
|
||||||
|
dependencies = [
|
||||||
|
"nu-ansi-term",
|
||||||
|
"sharded-slab",
|
||||||
|
"smallvec",
|
||||||
|
"thread_local",
|
||||||
|
"tracing-core",
|
||||||
|
"tracing-log",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tui-input"
|
name = "tui-input"
|
||||||
version = "0.8.0"
|
version = "0.8.0"
|
||||||
@ -824,6 +980,12 @@ version = "0.2.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "valuable"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "walkdir"
|
name = "walkdir"
|
||||||
version = "2.3.3"
|
version = "2.3.3"
|
||||||
@ -912,6 +1074,9 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"notify",
|
"notify",
|
||||||
"ratatui",
|
"ratatui",
|
||||||
|
"tracing",
|
||||||
|
"tracing-appender",
|
||||||
|
"tracing-subscriber",
|
||||||
"tui-input",
|
"tui-input",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -9,6 +9,9 @@ license-file.workspace = true
|
|||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
directories = "5.0"
|
directories = "5.0"
|
||||||
lazy_static = "1.4"
|
lazy_static = "1.4"
|
||||||
|
tracing = "0.1"
|
||||||
|
tracing-subscriber = "0.3"
|
||||||
|
tracing-appender = "0.2"
|
||||||
|
|
||||||
[dependencies.clap]
|
[dependencies.clap]
|
||||||
version = "4.3"
|
version = "4.3"
|
||||||
|
@ -7,6 +7,13 @@ mod watcher;
|
|||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use clap::Parser as ArgParser;
|
use clap::Parser as ArgParser;
|
||||||
|
use tracing::Level as TracingLevel;
|
||||||
|
use tracing_appender::rolling;
|
||||||
|
use tracing_subscriber::filter::Targets;
|
||||||
|
use tracing_subscriber::layer::SubscriberExt;
|
||||||
|
use tracing_subscriber::util::SubscriberInitExt;
|
||||||
|
|
||||||
|
use crate::state::logs_dir;
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, ArgParser)]
|
#[derive(Debug, ArgParser)]
|
||||||
@ -31,6 +38,8 @@ pub(crate) enum CommandArgs {
|
|||||||
|
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
|
tracing_setup()?;
|
||||||
|
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
match &args.command {
|
match &args.command {
|
||||||
@ -44,3 +53,30 @@ fn main() -> Result<()> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn tracing_setup() -> Result<()> {
|
||||||
|
// lower log leven when targeting release
|
||||||
|
let level = if cfg!(debug_assertions) {
|
||||||
|
TracingLevel::TRACE
|
||||||
|
} else {
|
||||||
|
TracingLevel::INFO
|
||||||
|
};
|
||||||
|
|
||||||
|
let filter_layer = Targets::new()
|
||||||
|
.with_target("wayfarer", level)
|
||||||
|
.with_default(TracingLevel::ERROR);
|
||||||
|
|
||||||
|
let file_writer = rolling::daily(logs_dir()?, "app");
|
||||||
|
|
||||||
|
let fmt_layer = tracing_subscriber::fmt::layer()
|
||||||
|
.with_writer(file_writer)
|
||||||
|
.with_ansi(false);
|
||||||
|
|
||||||
|
tracing_subscriber::registry()
|
||||||
|
.with(fmt_layer)
|
||||||
|
.with(filter_layer)
|
||||||
|
.try_init()?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
@ -1,12 +1,16 @@
|
|||||||
#![cfg(feature = "tui")]
|
use std::fs::create_dir_all;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::fs::{self, create_dir_all, read_to_string};
|
#[cfg(feature = "tui")]
|
||||||
use std::io::Write;
|
use std::{
|
||||||
use std::os::unix::prelude::OsStrExt;
|
fs::{self, read_to_string},
|
||||||
use std::path::Path;
|
io::Write,
|
||||||
|
os::unix::prelude::OsStrExt,
|
||||||
|
path::Path,
|
||||||
|
};
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use directories::ProjectDirs;
|
use directories::ProjectDirs;
|
||||||
|
#[cfg(feature = "tui")]
|
||||||
use jrny_save::Savefile;
|
use jrny_save::Savefile;
|
||||||
|
|
||||||
|
|
||||||
@ -17,11 +21,27 @@ lazy_static::lazy_static! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn logs_dir() -> Result<PathBuf> {
|
||||||
|
let log_root_path = DIRS
|
||||||
|
.state_dir()
|
||||||
|
.unwrap_or_else(|| DIRS.cache_dir())
|
||||||
|
.join("logs");
|
||||||
|
|
||||||
|
if !log_root_path.exists() {
|
||||||
|
create_dir_all(&log_root_path)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(log_root_path)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[cfg(feature = "tui")]
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct PersistentState {
|
pub struct PersistentState {
|
||||||
pub savefile: Option<Savefile>,
|
pub savefile: Option<Savefile>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "tui")]
|
||||||
impl PersistentState {
|
impl PersistentState {
|
||||||
pub fn load() -> Result<Self> {
|
pub fn load() -> Result<Self> {
|
||||||
let data_dir = DIRS.data_local_dir();
|
let data_dir = DIRS.data_local_dir();
|
||||||
@ -68,6 +88,7 @@ impl PersistentState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[cfg(feature = "tui")]
|
||||||
fn load_last_active_savefile() -> Result<Option<Savefile>> {
|
fn load_last_active_savefile() -> Result<Option<Savefile>> {
|
||||||
let state_path = DIRS.data_local_dir().join("active_savefile");
|
let state_path = DIRS.data_local_dir().join("active_savefile");
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ use ratatui::backend::CrosstermBackend;
|
|||||||
use ratatui::layout::{Alignment, Constraint, Direction, Layout, Rect};
|
use ratatui::layout::{Alignment, Constraint, Direction, Layout, Rect};
|
||||||
use ratatui::style::Style;
|
use ratatui::style::Style;
|
||||||
use ratatui::widgets::{Block, Borders, Cell, Padding, Paragraph, Row, Table};
|
use ratatui::widgets::{Block, Borders, Cell, Padding, Paragraph, Row, Table};
|
||||||
|
use tracing::{debug, error, info};
|
||||||
use tui_input::backend::crossterm::EventHandler;
|
use tui_input::backend::crossterm::EventHandler;
|
||||||
use tui_input::Input;
|
use tui_input::Input;
|
||||||
|
|
||||||
@ -93,6 +94,7 @@ pub(crate) fn execute(_app_args: &AppArgs, _args: &Args) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[tracing::instrument(skip_all)]
|
||||||
#[cfg_attr(not(feature = "watch"), allow(unused_mut))]
|
#[cfg_attr(not(feature = "watch"), allow(unused_mut))]
|
||||||
fn run(terminal: &mut Terminal, mut state: State) -> Result<()> {
|
fn run(terminal: &mut Terminal, mut state: State) -> Result<()> {
|
||||||
let (mut msg_tx, msg_rx) = mpsc::channel::<Message>();
|
let (mut msg_tx, msg_rx) = mpsc::channel::<Message>();
|
||||||
@ -105,9 +107,13 @@ fn run(terminal: &mut Terminal, mut state: State) -> Result<()> {
|
|||||||
handle_events(&mut msg_tx, &mut state)?;
|
handle_events(&mut msg_tx, &mut state)?;
|
||||||
|
|
||||||
match msg_rx.try_recv() {
|
match msg_rx.try_recv() {
|
||||||
Ok(Message::Exit) => break,
|
Ok(Message::Exit) => {
|
||||||
|
debug!("Exiting...");
|
||||||
|
break;
|
||||||
|
}
|
||||||
Ok(message) => {
|
Ok(message) => {
|
||||||
if let Err(err) = handle_message(&mut state, &mut msg_tx, message) {
|
if let Err(err) = handle_message(&mut state, &mut msg_tx, message) {
|
||||||
|
error!(message = ?err);
|
||||||
state.mode = Mode::ShowError(format!("{}", err));
|
state.mode = Mode::ShowError(format!("{}", err));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -120,6 +126,7 @@ fn run(terminal: &mut Terminal, mut state: State) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[tracing::instrument(skip(state, msg_tx))]
|
||||||
#[cfg_attr(not(feature = "watch"), allow(unused_variables))]
|
#[cfg_attr(not(feature = "watch"), allow(unused_variables))]
|
||||||
fn handle_message(
|
fn handle_message(
|
||||||
state: &mut State,
|
state: &mut State,
|
||||||
@ -128,13 +135,17 @@ fn handle_message(
|
|||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
match message {
|
match message {
|
||||||
Message::SetMode(mode) => {
|
Message::SetMode(mode) => {
|
||||||
|
debug!("Setting mode to {:?}", mode);
|
||||||
|
|
||||||
state.mode = mode;
|
state.mode = mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
Message::LoadFile => {
|
Message::LoadFile => {
|
||||||
state
|
let file_path = state.file_select.value();
|
||||||
.persistent
|
|
||||||
.set_active_savefile_path(state.file_select.value())?;
|
info!("Loading file {}", file_path);
|
||||||
|
|
||||||
|
state.persistent.set_active_savefile_path(file_path)?;
|
||||||
|
|
||||||
#[cfg(feature = "watch")]
|
#[cfg(feature = "watch")]
|
||||||
if state.file_watcher.is_some() {
|
if state.file_watcher.is_some() {
|
||||||
@ -153,15 +164,22 @@ fn handle_message(
|
|||||||
let callback = move || {
|
let callback = move || {
|
||||||
evq_tx.send(Message::ReloadFile).unwrap();
|
evq_tx.send(Message::ReloadFile).unwrap();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
info!("Starting file watcher on {}", savefile.path.display());
|
||||||
|
|
||||||
let file_watcher = FileWatcher::new(&savefile.path, callback);
|
let file_watcher = FileWatcher::new(&savefile.path, callback);
|
||||||
state.file_watcher = Some(file_watcher);
|
state.file_watcher = Some(file_watcher);
|
||||||
} else {
|
} else {
|
||||||
|
info!("Stopped file watcher on {}", savefile.path.display());
|
||||||
|
|
||||||
state.file_watcher = None;
|
state.file_watcher = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "watch")]
|
#[cfg(feature = "watch")]
|
||||||
Message::ReloadFile if state.persistent.savefile.is_some() => {
|
Message::ReloadFile if state.persistent.savefile.is_some() => {
|
||||||
|
debug!("Reloading file");
|
||||||
|
|
||||||
state.persistent.reload_active_savefile()?;
|
state.persistent.reload_active_savefile()?;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,6 +204,7 @@ fn handle_events(event_queue: &mut mpsc::Sender<Message>, state: &mut State) ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#[tracing::instrument(skip(msg_tx, state))]
|
||||||
fn handle_keyboard_input(
|
fn handle_keyboard_input(
|
||||||
key: KeyEvent,
|
key: KeyEvent,
|
||||||
msg_tx: &mut mpsc::Sender<Message>,
|
msg_tx: &mut mpsc::Sender<Message>,
|
||||||
@ -235,6 +254,7 @@ fn handle_keyboard_input(
|
|||||||
fn setup() -> Result<Terminal> {
|
fn setup() -> Result<Terminal> {
|
||||||
let mut stdout = io::stdout();
|
let mut stdout = io::stdout();
|
||||||
|
|
||||||
|
debug!("Enabling terminal raw mode");
|
||||||
enable_raw_mode()?;
|
enable_raw_mode()?;
|
||||||
|
|
||||||
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
|
||||||
@ -244,6 +264,7 @@ fn setup() -> Result<Terminal> {
|
|||||||
|
|
||||||
|
|
||||||
fn reset(mut terminal: Terminal) -> Result<()> {
|
fn reset(mut terminal: Terminal) -> Result<()> {
|
||||||
|
debug!("Disabling terminal raw mode");
|
||||||
disable_raw_mode()?;
|
disable_raw_mode()?;
|
||||||
|
|
||||||
execute!(
|
execute!(
|
||||||
|
Loading…
Reference in New Issue
Block a user