1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! Everything about IO -- except input from terminal.
//! It's responsible for the argument parsing, the display, the execution of commands, the logs, accessing the cloud (google drive only ATM) and opening files.
//!
//! - [`args::Args`] the argument parser from execution of fm,
//! - `commands` a bunch of public function for various execution of commands: do we need to specify some arguments ? Is it a sudo command ? Do we need its output ? Should it never fail etc. fm relies a lot on executing commands so there's always a new situation which require a few different parameters. All commands should be executed from here.
//! - [`display::Display`] the displayer itself. All terminal display is made there. It's a single file, since why not ? with a single entry point. It then displays one to four windows after splitting the screen. This struct changed a lot after migration from tuikit to ratatui and is subject to a lot of internal changement.
//! - [`draw_menu::DrawMenu`] is a trait used to display most of the menus. It's implemented directly most of the time.
//! - [`git::git`] & [`git::git_root`] are function related to.. git. They're used to display the git porcelain v2 infos at the bottom and move to the git root of current folder.
//! - [`input_history::InputHistory`] is a basic history of text inputs, filtered by menu mode. It's used to allow moving back to a previous input without remembering it. Don't forget that logs are disabled by default and require the argument flag `-l` to be enabled.
//! - `log` contains a few functions to setup, read & write to logs. They're used everywhere in the application for debugging (obviously) but also to display what the last action did.
//! - [`opendal::OpendalContainer`] is the central struct dealing the google drive files, once the connection is established.
//! - [`opener::Opener`] and other structs of this file are used to open files. The opener are configurable in the config files.
pub use Args;
pub use *;
pub use ;
pub use *;
pub use ;
pub use *;
pub use *;
pub use *;
pub use ;
pub use *;
pub use *;
pub use *;
pub use *;