@@ -3,7 +3,7 @@ use crate::settings::GPG;
33use anyhow:: { anyhow, Result } ;
44use colored:: Colorize ;
55use serde:: { Deserialize , Serialize } ;
6- use serde_json_merge:: { Dfs , Merge , Union } ;
6+ use serde_json_merge:: { Dfs , Merge } ;
77use std:: fs:: File ;
88use std:: io:: prelude:: * ;
99use std:: io:: BufReader ;
@@ -65,15 +65,16 @@ impl Variables {
6565 pub ( crate ) fn push_secret ( & mut self , key : & str , encrypted : & str ) {
6666 match self . get_secrets_mut ( ) {
6767 None => {
68- let mut secrets_inner = tera:: Map :: new ( ) ;
69- secrets_inner. insert ( key. to_string ( ) , Value :: String ( encrypted. to_string ( ) ) ) ;
7068 let mut secrets = tera:: Map :: new ( ) ;
71- secrets. insert ( "secrets" . to_string ( ) , Value :: Object ( secrets_inner) ) ;
72- self . inner . union :: < Dfs > ( & Value :: Object ( secrets) ) ;
69+ secrets. insert ( key. to_string ( ) , Value :: String ( encrypted. to_string ( ) ) ) ;
70+ let Some ( vars) = self . inner . as_object_mut ( ) else {
71+ panic ! ( "Variables should be a Value::Object" ) ;
72+ } ;
73+
74+ vars. insert ( "secrets" . to_string ( ) , Value :: Object ( secrets) ) ;
7375 }
74- Some ( mut secrets) => {
76+ Some ( secrets) => {
7577 secrets. insert ( key. to_string ( ) , Value :: String ( encrypted. to_string ( ) ) ) ;
76- self . inner . union :: < Dfs > ( & Value :: Object ( secrets) ) ;
7778 }
7879 } ;
7980 }
@@ -174,11 +175,10 @@ impl Variables {
174175 Ok ( Value :: Object ( decrypted) )
175176 }
176177
177- fn get_secrets_mut ( & mut self ) -> Option < Map < String , Value > > {
178+ fn get_secrets_mut ( & mut self ) -> Option < & mut Map < String , Value > > {
178179 self . inner
179180 . get_mut ( "secrets" )
180- . and_then ( |value| value. as_object ( ) )
181- . cloned ( )
181+ . and_then ( |value| value. as_object_mut ( ) )
182182 }
183183}
184184
@@ -223,6 +223,7 @@ mod test {
223223 } ;
224224
225225 variables. push_secret ( "pass" , "hunter2" ) ;
226+
226227 let dot_content = variables
227228 . to_dot ( Path :: new ( "tests/dotfiles_with_secret/template" ) , & [ ] )
228229 . unwrap ( ) ;
0 commit comments