@@ -34,6 +34,7 @@ use crate::config::{Config, ConfigMap};
3434use crate :: file;
3535use crate :: path:: PathExt ;
3636use crate :: system:: files:: FileState ;
37+ use crate :: system:: resources:: ResourceOrigin ;
3738use crate :: ui:: prompt;
3839
3940/// one `[dotfiles]` edit entry as written in mise.toml. Operations stay loosely typed so configs using operations
@@ -107,6 +108,7 @@ pub struct EditRequest {
107108 pub base : PathBuf ,
108109 /// config file that declared this edit
109110 pub config_path : PathBuf ,
111+ pub origin : ResourceOrigin ,
110112}
111113
112114impl EditRequest {
@@ -228,6 +230,12 @@ fn resolve_entry(
228230 "\" {path_raw}\" .{id:?}: ids may only contain letters, digits, '_', '-', and '.', ignoring entry"
229231 ) ;
230232 }
233+ let mut origin = ResourceOrigin {
234+ config : config_path. to_path_buf ( ) ,
235+ config_root : crate :: config:: config_file:: config_root:: config_root ( config_path) ,
236+ environment : crate :: config:: environments_for_config_path ( config_path) ,
237+ source : None ,
238+ } ;
231239 let entry = match entry {
232240 EditTomlEntry :: Block ( inline) => EditTomlTable {
233241 block : Some ( inline) ,
@@ -260,11 +268,13 @@ fn resolve_entry(
260268 ( Some ( inline) , None ) => BlockSource :: Inline ( inline) ,
261269 ( None , Some ( src) ) => {
262270 let src = file:: replace_path ( & src) ;
263- BlockSource :: File ( if src. is_relative ( ) {
271+ let src = if src. is_relative ( ) {
264272 base. join ( src)
265273 } else {
266274 src
267- } )
275+ } ;
276+ origin. source = Some ( src. clone ( ) ) ;
277+ BlockSource :: File ( src)
268278 }
269279 ( None , None ) => unreachable ! ( "is_block" ) ,
270280 } ;
@@ -305,6 +315,7 @@ fn resolve_entry(
305315 op,
306316 base : base. to_path_buf ( ) ,
307317 config_path : config_path. to_path_buf ( ) ,
318+ origin,
308319 } )
309320}
310321
0 commit comments