From e7a79216ab276cb53cbc1eed359ea5181e02ccd5 Mon Sep 17 00:00:00 2001
From: Jeff Young <jeff@rokeby.ie>
Date: Mon, 13 Jan 2025 12:43:01 +0000
Subject: [PATCH] Add non-title-block var resolution to jobset outputs.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19357

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19618
---
 common/jobs/jobs_output_archive.cpp | 13 ++++++-------
 common/jobs/jobs_output_folder.cpp  |  7 ++++---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/common/jobs/jobs_output_archive.cpp b/common/jobs/jobs_output_archive.cpp
index eb88c16f61..9450a4a9e9 100644
--- a/common/jobs/jobs_output_archive.cpp
+++ b/common/jobs/jobs_output_archive.cpp
@@ -25,7 +25,8 @@
 #include <gestfich.h>
 #include <common.h>
 
-JOBS_OUTPUT_ARCHIVE::JOBS_OUTPUT_ARCHIVE() : JOBS_OUTPUT_HANDLER(),
+JOBS_OUTPUT_ARCHIVE::JOBS_OUTPUT_ARCHIVE() :
+    JOBS_OUTPUT_HANDLER(),
     m_format( FORMAT::ZIP )
 {
 }
@@ -42,15 +43,16 @@ bool JOBS_OUTPUT_ARCHIVE::OutputPrecheck()
 }
 
 
-bool JOBS_OUTPUT_ARCHIVE::HandleOutputs( const wxString&                baseTempPath,
-                                         PROJECT* aProject,
+bool JOBS_OUTPUT_ARCHIVE::HandleOutputs( const wxString& baseTempPath, PROJECT* aProject,
                                          const std::vector<JOB_OUTPUT>& aOutputsToHandle )
 {
     bool success = true;
 
-    wxString outputPath = ExpandEnvVarSubstitutions( m_outputPath, aProject );
+    wxString outputPath = ExpandTextVars( m_outputPath, aProject );
+    outputPath = ExpandEnvVarSubstitutions( outputPath, aProject );
 
     wxFFileOutputStream ostream( outputPath );
+
     if( !ostream.IsOk() ) // issue to create the file. Perhaps not writable dir
     {
         //msg.Printf( _( "Failed to create file '%s'." ), aDestFile );
@@ -61,19 +63,16 @@ bool JOBS_OUTPUT_ARCHIVE::HandleOutputs( const wxString&                baseTemp
     wxZipOutputStream zipstream( ostream, -1, wxConvUTF8 );
     wxString          errors;
 
-
     if( !AddDirectoryToZip( zipstream, baseTempPath, errors ) )
     {
         success = false;
     }
 
-
     if( !zipstream.Close() )
     {
         success = false;
     }
 
-
     return success;
 }
 
diff --git a/common/jobs/jobs_output_folder.cpp b/common/jobs/jobs_output_folder.cpp
index 7d85283a82..c69ea7803b 100644
--- a/common/jobs/jobs_output_folder.cpp
+++ b/common/jobs/jobs_output_folder.cpp
@@ -30,11 +30,11 @@ JOBS_OUTPUT_FOLDER::JOBS_OUTPUT_FOLDER() :
 }
 
 
-bool JOBS_OUTPUT_FOLDER::HandleOutputs( const wxString&                baseTempPath,
-                                        PROJECT* aProject,
+bool JOBS_OUTPUT_FOLDER::HandleOutputs( const wxString& baseTempPath, PROJECT* aProject,
                                         const std::vector<JOB_OUTPUT>& aOutputsToHandle )
 {
-    wxString outputPath = ExpandEnvVarSubstitutions( m_outputPath, aProject );
+    wxString outputPath = ExpandTextVars( m_outputPath, aProject );
+    outputPath = ExpandEnvVarSubstitutions( outputPath, aProject );
 
     if( !wxFileName::DirExists( outputPath ) )
     {
@@ -47,6 +47,7 @@ bool JOBS_OUTPUT_FOLDER::HandleOutputs( const wxString&                baseTempP
     bool success = true;
 
     wxString errors;
+
     if( !CopyDirectory( baseTempPath, outputPath, errors ) )
     {
         success = false;