collective_score_client/
lib.rs1pub mod check;
2mod cli;
3mod progress;
4mod state;
5mod token;
6pub mod validator;
7
8use anyhow::{Context, Result};
9use check::RunnableCheck;
10use cli::Cli;
11use directories::ProjectDirs;
12use indexmap::IndexMap;
13use std::fs::create_dir_all;
14
15pub type Tasks = IndexMap<&'static str, Box<dyn RunnableCheck>>;
16
17pub fn run(tasks: Tasks, data_dir_name: &'static str, server_base_url: &'static str) -> Result<()> {
18 let project_dirs = ProjectDirs::from("", "", data_dir_name)
19 .context("Failed to resolve a path for the data directory!")?;
20
21 let data_dir = project_dirs.data_dir();
22 if !data_dir.is_dir() {
23 create_dir_all(data_dir).with_context(|| {
24 format!(
25 "Failed to create the data directory {}!",
26 data_dir.display(),
27 )
28 })?;
29 }
30
31 Cli::run(data_dir, server_base_url, &tasks)
32}