MCPcopy Create free account
hub / github.com/PerroEngine/Perro / rename_res_target

Function rename_res_target

perro_editor/res/scripts/assets/editor_assets.rs:1449–1499  ·  view source on GitHub ↗
(project_root: &str, source: &str, raw_name: &str)

Source from the content-addressed store, hash-verified

1447 .collect();
1448 }
1449 state.active_asset_path = target.clone();
1450 state.file_scope = parent_res_folder(&target);
1451 reveal_file_path_in_tree(state, &target);
1452 state.log = format!("rename asset\n{source} -> {target}");
1453 let next_open = state
1454 .open_paths
1455 .get(state.active_open)
1456 .filter(|open| *open == &target)
1457 .cloned();
1458 (
1459 next_open,
1460 state.scene_paths.clone(),
1461 state.dirty_scene_paths.clone(),
1462 )
1463 })
1464 .unwrap_or((None, Vec::new(), Vec::new()));
1465 let rewrite_count =
1466 rewrite_clean_scene_asset_refs(&root, &scene_paths, &dirty_paths, &source, &target);
1467 if rewrite_count > 0 {
1468 let _ = with_state_mut!(ctx.run, EditorState, ctx.id, |state| {
1469 state.project_file_sigs = editor_file_watch::scan_project(Path::new(&root));
1470 state.log =
1471 format!("rename asset\n{source} -> {target}\nupd refs={rewrite_count}");
1472 });
1473 }
1474 if let Some(next) = next_open {
1475 open_scene_path(ctx, &next);
1476 } else {
1477 refresh_all(ctx);
1478 }
1479 }
1480 Err(err) => set_log(ctx, &format!("rename asset fail\n{source}\n{err}")),
1481 }
1482}
1483
1484pub fn rewrite_clean_scene_asset_refs(
1485 root: &str,
1486 scene_paths: &[String],
1487 dirty_paths: &[String],
1488 source: &str,
1489 target: &str,
1490) -> usize {
1491 let mut changed = 0;
1492 for path in scene_paths {
1493 if dirty_paths.iter().any(|dirty| dirty == path) {
1494 continue;
1495 }
1496 let abs = res_to_abs(root, path);
1497 let Ok(text) = FileMod::load_string(&abs) else {
1498 continue;
1499 };
1500 let mut doc = SceneDoc::parse(&text);
1501 if !rewrite_asset_refs_in_doc(&mut doc, source, target) {
1502 continue;

Callers

nothing calls this directly

Calls 6

parent_res_folderFunction · 0.85
rel_labelFunction · 0.85
sanitize_file_stemFunction · 0.85
res_to_absFunction · 0.50
is_emptyMethod · 0.45
containsMethod · 0.45

Tested by

no test coverage detected