replacement in libflorescence/src/testing.rs at line 79
− repo::add(&mut repo, DEFAULT_IGNORE_FILE).unwrap();
+ let recursive = false;
+ repo::add(&mut repo, DEFAULT_IGNORE_FILE, recursive).unwrap();
edit in libflorescence/src/repo.rs at line 65
replacement in libflorescence/src/repo.rs at line 391
[3.2396]→[3.2396:2442](∅→∅) − MsgIn::AddUntrackedFile { path } => {
+ MsgIn::AddUntrackedFile { path, recursive } => {
replacement in libflorescence/src/repo.rs at line 395
[11.968]→[11.968:1036](∅→∅) − let result = add(&mut internal_state, &path_clone);
+ let result = add(&mut internal_state, &path_clone, recursive);
edit in libflorescence/src/repo.rs at line 938
replacement in libflorescence/src/repo.rs at line 957
[2.1191]→[2.1191:1197](∅→∅) + if recursive {
+ let threads = std::thread::available_parallelism()?.get();
+ use libpijul::working_copy::filesystem::*;
+ let (full, _) = get_prefix(Some(repo_path.as_ref()), path.as_path())?;
+ let full = CanonicalPathBuf::new(&full)?;
+ repo.working_copy.add_prefix_rec(
+ &txn,
+ repo_path.clone(),
+ full.clone(),
+ false,
+ threads,
+ 0,
+ )?
+ } else {
replacement in libflorescence/src/repo/test.rs at line 208
[6.406]→[11.10967:11021](∅→∅) − repo::add(&mut internal.repo, new_file).unwrap();
+ let recursive = false;
+ repo::add(&mut internal.repo, new_file, recursive).unwrap();
edit in libflorescence/src/repo/test.rs at line 222
+
+ // Create a dir with a file inside it
+ let new_dir = "a";
+ std::fs::create_dir(repo_path.join(new_dir)).unwrap();
+ let new_file = "new_file";
+ std::fs::write(repo_path.join(new_dir).join(new_file), "some content")
+ .unwrap();
+
+ let recursive = true;
+ repo::add(&mut internal.repo, new_dir, recursive).unwrap();
+
+ let diff = repo::get_diff(&internal.repo).unwrap();
+ assert_eq!(diff.changes.len(), 2);
edit in inflorescence_model/src/model.rs at line 89
+ Add { recursive: bool },
replacement in inflorescence_model/src/action.rs at line 40
[8.4147]→[8.4147:4169](∅→∅) replacement in inflorescence_model/src/action.rs at line 86
[8.4801]→[8.4801:4855](∅→∅) − (AddUntrackedFile, AddUntrackedFile) => true,
+ (ToggleRecursive, ToggleRecursive) => true,
replacement in inflorescence_model/src/action.rs at line 126
[8.5333]→[8.5333:5373](∅→∅) − (AddUntrackedFile, _) => false,
+ (ToggleRecursive, _) => false,
edit in inflorescence_model/src/action.rs at line 238
+ model::SubMenu::Add { recursive } => {
+ vec![
+ confirm("confirm add"),
+ toggle_recursive(*recursive),
+ cancel(),
+ ]
+ }
replacement in inflorescence_model/src/action.rs at line 511
[8.7214]→[10.7978:8028](∅→∅) − msg: Some(FilteredMsg::AddUntrackedFile),
+ msg: Some(FilteredMsg::EnterSubMenu(model::SubMenu::Add {
+ recursive: false,
+ })),
edit in inflorescence_model/src/action.rs at line 1437
+ fn toggle_recursive(is_recursive: bool) -> Binding {
+ Binding {
+ keys_str: "r",
+ keys: ModKeys::One(ModKey {
+ key: Key::Character("r".into()),
+ mods: Mods::NONE,
+ }),
+ label: if is_recursive {
+ "add non-recursive"
+ } else {
+ "add recursive"
+ },
+ msg: Some(FilteredMsg::ToggleRecursive),
+ }
+ }
+
replacement in inflorescence/src/test.rs at line 152
[9.26774]→[10.9028:9105](∅→∅) − Msg::View(view::Msg::Action(action::FilteredMsg::AddUntrackedFile)),
+ Msg::View(view::Msg::Action(action::FilteredMsg::EnterSubMenu(
+ model::SubMenu::Add { recursive: false },
+ ))),
+ );
+ let _task = update(
+ &mut state,
+ Msg::View(view::Msg::Action(action::FilteredMsg::Confirm)),
replacement in inflorescence/src/test.rs at line 276
[9.27820]→[10.9597:9674](∅→∅) − Msg::View(view::Msg::Action(action::FilteredMsg::AddUntrackedFile)),
+ Msg::View(view::Msg::Action(action::FilteredMsg::EnterSubMenu(
+ model::SubMenu::Add { recursive: false },
+ ))),
+ );
+ let _task = update(
+ &mut state,
+ Msg::View(view::Msg::Action(action::FilteredMsg::Confirm)),
replacement in inflorescence/src/test.rs at line 594
[9.29167]→[10.10535:10612](∅→∅) − Msg::View(view::Msg::Action(action::FilteredMsg::AddUntrackedFile)),
+ Msg::View(view::Msg::Action(action::FilteredMsg::EnterSubMenu(
+ model::SubMenu::Add { recursive: false },
+ ))),
+ );
+ let _task = update(
+ &mut state,
+ Msg::View(view::Msg::Action(action::FilteredMsg::Confirm)),
replacement in inflorescence/src/main.rs at line 458
[17.4156]→[17.4156:4208](∅→∅) − | action::FilteredMsg::AddUntrackedFile
+ | action::FilteredMsg::ToggleRecursive
replacement in inflorescence/src/main.rs at line 879
[19.34227]→[19.34227:34282](∅→∅) − | model::SubMenu::ResetChange,
+ | model::SubMenu::ResetChange
+ | model::SubMenu::Add { .. },
replacement in inflorescence/src/main.rs at line 903
[16.18388]→[16.18388:18440](∅→∅) − | action::FilteredMsg::AddUntrackedFile
+ | action::FilteredMsg::ToggleRecursive
edit in inflorescence/src/main.rs at line 1036
+ Some(model::SubMenu::Add { recursive }) => {
+ let task = add_untracked_file(state, model, *recursive);
+ *sub_menu = None;
+ task
+ }
replacement in inflorescence/src/main.rs at line 1154
[15.3618547]→[15.3618547:3618653](∅→∅) − action::FilteredMsg::AddUntrackedFile => {
− add_untracked_file(state, model)
− }
+ action::FilteredMsg::ToggleRecursive => toggle_recursive(sub_menu),
edit in inflorescence/src/main.rs at line 1385
+ }
+
+ fn toggle_recursive(sub_menu: &mut Option<model::SubMenu>) -> Task<Msg> {
+ if let Some(model::SubMenu::Add { recursive }) = sub_menu.as_mut() {
+ *recursive = !*recursive;
+ }
+ Task::none()
edit in inflorescence/src/main.rs at line 1637
edit in inflorescence/src/main.rs at line 1657