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}