1use crate::exceptions::AicoError;
2use crate::fs::validate_input_paths;
3use crate::session::Session;
4use std::path::PathBuf;
5
6pub fn run(file_paths: Vec<PathBuf>) -> Result<(), AicoError> {
7 let mut session = Session::load_active()?;
8
9 let (valid_rels, has_errors) = validate_input_paths(&session.root, &file_paths, true);
11
12 let mut changed = false;
14 for rel in valid_rels {
15 if session.view.context_files.contains(&rel) {
16 println!("File already in context: {}", rel);
17 } else {
18 println!("Added file to context: {}", rel);
19 session.view.context_files.push(rel);
20 changed = true;
21 }
22 }
23
24 if changed {
26 session.view.context_files.sort();
27 session.save_view()?;
28 }
29
30 if has_errors {
31 return Err(AicoError::InvalidInput(
32 "One or more files could not be added.".into(),
33 ));
34 }
35
36 Ok(())
37}