Skip to main content

soup_rs/errors/
mod.rs

1use std::env;
2use std::fs;
3use std::path::PathBuf;
4
5#[derive(Debug, PartialEq)]
6pub enum SoupError {
7    MissingConfig,
8    InvalidConfig,
9    InvalidCommand,
10}
11
12/// Prints out error description based on type
13pub fn describe_error(err: SoupError) {
14    match err {
15        SoupError::MissingConfig => missing_config(),
16        SoupError::InvalidCommand => invalid_command(),
17        SoupError::InvalidConfig => invalid_config(),
18    }
19}
20
21fn missing_config() {
22    eprintln!("[Error]: Missing config file.");
23    println!("-------");
24    println!("Attempting to create one...");
25
26    let config_path = PathBuf::from(env::var("HOME").unwrap()).join(".config/soup.cfg");
27    let contents = "zola_dir=/path/to/zola/dir";
28
29    match fs::write(&config_path, contents) {
30        Ok(_) => println!("Created: {}", config_path.display()),
31        Err(e) => eprintln!("Error creating config file: {}", e),
32    }
33}
34
35fn invalid_config() {
36    eprintln!("[Error]: Invalid config file.");
37    println!("-------");
38    println!("Zola directory isn't set or doesn't exist.");
39}
40
41fn invalid_command() {
42    eprintln!("[Error]: Invalid command");
43    println!("-------");
44    println!("Available commands:");
45    println!("  add      - Adds a new note");
46    println!("");
47}