changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > demo / annotate obj/src/cfg.rs

changeset 18: a1137af05c8d
author: ellis <ellis@rwest.io>
date: Mon, 29 May 2023 21:46:21 -0400
permissions: -rw-r--r--
description: removed fig, use sexprs instead
18
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
1
 /// common trait for all config modules. This trait provides functions
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
2
 /// for de/serializing to/from RON, updating fields, and formatting.
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
3
 use serde::{Serialize, Deserialize};
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
4
 use crate::Objective;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
5
 use std::collections::HashMap as M;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
6
 use std::path::PathBuf;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
7
 use std::string::String as S;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
8
 use std::error::Error as E;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
9
 use std::boxed::Box as B;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
10
 type R<X> = std::result::Result<X,B<dyn E>>;
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
11
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
12
 pub trait Configure: Objective {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
13
   fn update(&self) -> R<()> {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
14
     Ok(())
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
15
   }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
16
 }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
17
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
18
 #[derive(Serialize, Deserialize, Debug, Default)]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
19
 pub struct ShellConfig {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
20
   pub env: M<S,S>,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
21
   pub cmds: M<S,S>,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
22
   pub shell: ShellType,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
23
 }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
24
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
25
 impl Objective for ShellConfig {}
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
26
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
27
 #[derive(Serialize, Deserialize, Debug, Hash, Default)]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
28
 pub enum ShellType {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
29
   #[default]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
30
   Bash,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
31
   Zsh,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
32
   Sh,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
33
 }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
34
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
35
 #[derive(Serialize, Deserialize, Debug, Default)]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
36
 pub enum EditorType {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
37
   #[default]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
38
   Emacs,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
39
   Vi,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
40
   Nano,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
41
 }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
42
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
43
 #[derive(Serialize, Deserialize, Debug, Default)]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
44
 pub struct EditorConfig {
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
45
   pub editor: EditorType,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
46
   pub cmds: M<S,S>,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
47
   pub init_file: PathBuf,
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
48
 }
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
49
 
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
50
 #[cfg(test)]
a1137af05c8d removed fig, use sexprs instead
ellis <ellis@rwest.io>
parents:
diff changeset
51
 mod tests;