jona / jarvis.sh

public
main / src/main.rs
1.6 KB · Rust Raw
 1#![allow(dead_code)]
 2
 3use std::io;
 4use std::io::Write;
 5
 6#[derive(Debug)]
 7enum ParameterType {
 8    Operational,
 9    UI,
10    Tool
11}
12
13#[derive(Debug)]
14struct PluginConfig {
15    name: String
16}
17
18#[derive(Debug)]
19enum Value {
20    Instruction(String),
21    Asset(String),
22    Plugin(PluginConfig)
23}
24
25#[derive(Debug)]
26struct Parameter {
27    key: String,
28    category: ParameterType,
29    value: Value
30}
31
32struct Jarvis {
33    name: String,
34    cpu_usage: i32,
35    config: Vec<Parameter>
36}
37
38impl Jarvis {
39    fn create() -> Jarvis {
40        let new_instance = Jarvis {
41            name: "Jarvis coding assistant".to_string(),
42            cpu_usage: 125,
43            config: vec![]
44        };
45
46        new_instance
47    }
48
49    fn default_config(&mut self) {
50        let tone_value = Value::Asset("Positive".to_string());
51        let tone = Parameter {
52            key: "Tone".to_string(),
53            category: ParameterType::UI,
54            value: tone_value
55        };
56
57        self.config.push(tone);
58    }
59
60    fn operate(&self) {
61        println!("Hello Sr. Stark");
62        println!("Stats: ");
63        println!("\tname: {}", self.name);
64        println!("\tcpu usage: {}", self.cpu_usage);
65        println!("\tconfig: {:?}", self.config);
66        println!("How can I help you?");
67        print!("=>> ");
68        io::stdout().flush().expect("Failed to flush stdout");
69        let mut prompt = String::new();
70        io::stdin().read_line(&mut prompt).expect("failed to readline");
71
72        
73
74        println!("Exiting....");
75    }
76}
77
78fn main() {
79    let mut jarvis = Jarvis::create();
80
81    jarvis.default_config();
82    jarvis.operate();
83}