@@ -289,7 +289,15 @@ def main():
289289 for key , value in data .items ():
290290 print (f"{ key } ={ value } " )
291291
292- elif args .set is not None :
292+ elif args .clear :
293+ from envstack .env import clear
294+
295+ print (clear (args .namespace , shell = config .SHELL ))
296+
297+ elif args .export and args .resolve is None and args .set is None :
298+ print (export (args .namespace , shell = config .SHELL , encrypt = args .encrypt ))
299+
300+ elif args .set is not None and args .resolve is None :
293301 force_stdin = args .set == [] or args .set == ["-" ]
294302 using_pipe = args .set == [] and not sys .stdin .isatty ()
295303
@@ -360,18 +368,32 @@ def main():
360368 resolved = resolve_environ (
361369 load_environ (args .namespace , platform = args .platform )
362370 )
371+ if args .set :
372+ resolved .update (_parse_keyvals (args .set ))
363373 if args .encrypt :
364374 resolved = encrypt_environ (resolved )
365375 if args .out :
366376 if len (args .resolve ) == 0 :
367377 resolved .write (args .out , depth = 0 )
368378 else :
369- env = Env (
370- {key : resolved [key ] for key in args .resolve if key in resolved }
371- )
379+ keys = args .resolve or resolved .keys ()
380+ if args .set :
381+ keys = set (keys ).union (_parse_keyvals (args .set ).keys ())
382+ env = Env ({key : resolved [key ] for key in keys })
372383 env .write (args .out , depth = 0 )
384+ elif args .export :
385+ if len (args .resolve ) == 0 :
386+ print (export_env_to_shell (resolved , shell = config .SHELL ))
387+ else :
388+ keys = args .resolve or resolved .keys ()
389+ if args .set :
390+ keys = set (keys ).union (_parse_keyvals (args .set ).keys ())
391+ env = Env ({key : resolved [key ] for key in keys })
392+ print (export_env_to_shell (env , shell = config .SHELL ))
373393 else :
374394 keys = args .resolve or resolved .keys ()
395+ if args .set :
396+ keys = set (keys ).union (_parse_keyvals (args .set ).keys ())
375397 for key in sorted (str (k ) for k in keys ):
376398 val = resolved .get (key )
377399 if key in resolved :
@@ -404,14 +426,6 @@ def main():
404426 for source in env .sources :
405427 print (source .path )
406428
407- elif args .clear :
408- from envstack .env import clear
409-
410- print (clear (args .namespace , config .SHELL ))
411-
412- elif args .export :
413- print (export (args .namespace , config .SHELL ))
414-
415429 else :
416430 env = load_environ (
417431 args .namespace , platform = args .platform , encrypt = args .encrypt
0 commit comments