gitm/commands/
config.rs

1use clier::{
2  display::{label::LabelLogger, Displayer},
3  hooks::use_double_dash,
4  run::ExitCode,
5  Clier, HasMeta, Runnable,
6};
7
8use crate::config::{self, Editors};
9
10fn resolve_edit(editor: &str) -> Option<Editors> {
11  match editor {
12    "neovim" => Some(Editors::Neovim),
13    "vscode" => Some(Editors::VSCode),
14    _ => None,
15  }
16}
17
18pub fn set_editor_config_command(clier: Clier<HasMeta, Runnable>) -> ExitCode {
19  let log = LabelLogger::default();
20
21  let editor = match clier.args.commands.get(2) {
22    Some(editor) => resolve_edit(editor),
23    None => {
24      log.error("Editor not provided");
25      return ExitCode(1);
26    }
27  };
28
29  let gur_editor = editor.expect("Invalid editor");
30  let mut config = config::load_config();
31  config.editor = Some(gur_editor);
32  config::write_config(config).expect("Failed to write");
33
34  ExitCode(0)
35}
36
37pub fn set_dir_config_command(clier: Clier<HasMeta, Runnable>) -> ExitCode {
38  let path = use_double_dash(&clier).expect("Put the path after '--'");
39
40  let mut config = config::load_config();
41  config.project_directory = path;
42  config::write_config(config).expect("Failed to write");
43
44  ExitCode(0)
45}