@@ -766,7 +766,16 @@ func (c *Config) createAndReloadConfigFile(cmd *cobra.Command) error {
766766 if err := c .decodeConfigBytes (configTemplate .format , configFileContents , & c .ConfigFile ); err != nil {
767767 return fmt .Errorf ("%s: %w" , configTemplate .sourceAbsPath , err )
768768 }
769- return c .setEncryption ()
769+
770+ if err := c .setEncryption (); err != nil {
771+ return err
772+ }
773+
774+ if err := c .setEnvironmentVariables (); err != nil {
775+ return err
776+ }
777+
778+ return nil
770779}
771780
772781// createConfigFile creates a config file using a template and returns its
@@ -2175,20 +2184,9 @@ func (c *Config) persistentPreRunRootE(cmd *cobra.Command, args []string) error
21752184 os .Setenv (key , valueStr )
21762185 }
21772186 }
2178- var env map [string ]string
2179- switch {
2180- case len (c .Env ) != 0 && len (c .ScriptEnv ) != 0 :
2181- return errors .New ("only one of env or scriptEnv may be set" )
2182- case len (c .Env ) != 0 :
2183- env = c .Env
2184- case len (c .ScriptEnv ) != 0 :
2185- env = c .ScriptEnv
2186- }
2187- for key , value := range env {
2188- if strings .HasPrefix (key , "CHEZMOI_" ) {
2189- c .errorf ("warning: %s: overriding reserved environment variable" , key )
2190- }
2191- os .Setenv (key , value )
2187+
2188+ if err := c .setEnvironmentVariables (); err != nil {
2189+ return err
21922190 }
21932191
21942192 if err := c .runHookPre (cmd .Name ()); err != nil {
@@ -2465,6 +2463,28 @@ func (c *Config) setEncryption() error {
24652463 return nil
24662464}
24672465
2466+ // setEnvironmentVariables sets all environment variables defined in c.
2467+ func (c * Config ) setEnvironmentVariables () error {
2468+ var env map [string ]string
2469+ switch {
2470+ case len (c .Env ) != 0 && len (c .ScriptEnv ) != 0 :
2471+ return errors .New ("only one of env or scriptEnv may be set" )
2472+ case len (c .Env ) != 0 :
2473+ env = c .Env
2474+ case len (c .ScriptEnv ) != 0 :
2475+ env = c .ScriptEnv
2476+ }
2477+ for key , value := range env {
2478+ if strings .HasPrefix (key , "CHEZMOI_" ) {
2479+ c .errorf ("warning: %s: overriding reserved environment variable" , key )
2480+ }
2481+ if err := os .Setenv (key , value ); err != nil {
2482+ return err
2483+ }
2484+ }
2485+ return nil
2486+ }
2487+
24682488// sourceAbsPaths returns the source absolute paths for each target path in
24692489// args.
24702490func (c * Config ) sourceAbsPaths (
0 commit comments