devalang_core/utils/
first_usage.rs

1use crossterm::style::{Attribute, SetAttribute};
2use std::fmt::Write;
3
4use crate::{
5    config::settings::{get_devalang_homedir, set_user_config_bool, write_user_config_file},
6    utils::signature::get_signature,
7};
8
9pub fn check_is_first_usage() {
10    if get_devalang_homedir()
11        .join("config.json")
12        .try_exists()
13        .is_ok()
14    {
15        // Do nothing
16    } else {
17        first_usage_welcome();
18        write_user_config_file();
19    }
20}
21
22pub fn first_usage_welcome() {
23    let version = env!("CARGO_PKG_VERSION");
24    print!("{}", get_signature(version));
25
26    let mut s = String::new();
27    let welcome_msg = format!(
28        "Welcome to Devalang ! \n\
29        It looks like this is your first time using the tool.\n\
30        A configuration file will be created in your home directory.\n\
31        ({})",
32        get_devalang_homedir().display()
33    );
34
35    write!(&mut s, "{}", SetAttribute(Attribute::Bold)).unwrap();
36    write!(&mut s, "{}", welcome_msg).unwrap();
37    write!(&mut s, "{}", SetAttribute(Attribute::Reset)).unwrap();
38
39    println!("");
40    println!("{}", s);
41    println!("");
42
43    first_usage_ask_for_telemetry();
44}
45
46pub fn first_usage_ask_for_telemetry() {
47    let telemetry_msg = "Would you like to enable anonymous telemetry ?";
48    let telemetry_desc = "This data helps us improve the tool. You can opt-out at any time.";
49
50    let telemetry_prompt = inquire::Confirm::new(telemetry_msg)
51        .with_help_message(telemetry_desc)
52        .with_default(false)
53        .prompt();
54
55    let telemetry_response = telemetry_prompt.unwrap_or(false);
56
57    write_user_config_file();
58
59    if telemetry_response == true {
60        println!("");
61        println!(
62            "Telemetry enabled. You can opt-out at any time by using 'devalang telemetry disable'"
63        );
64        println!("");
65
66        set_user_config_bool("telemetry", true);
67    } else {
68        println!("");
69        println!(
70            "Telemetry disabled. You can enable it at any time by using 'devalang telemetry enable'"
71        );
72        println!("");
73
74        set_user_config_bool("telemetry", false);
75    }
76}