@@ -226,8 +226,9 @@ func ZipArchive(
226226 if err != nil {
227227 return fmt .Errorf ("error creating .zip header for components/ directory: %w" , err )
228228 }
229+
229230 // iterate over components
230- for dirName , units := range compDirs {
231+ for dirName , comp := range componentResults {
231232 _ , err := zw .CreateHeader (& zip.FileHeader {
232233 Name : fmt .Sprintf ("components/%s/" , dirName ),
233234 Method : zip .Deflate ,
@@ -236,66 +237,65 @@ func ZipArchive(
236237 if err != nil {
237238 return fmt .Errorf ("error creating .zip header for component directory: %w" , err )
238239 }
239- // create component diags
240- if comp , ok := componentResults [dirName ]; ok {
241- // check for component-level errors
242- if comp .Err != nil {
243- err = writeErrorResult (zw , fmt .Sprintf ("components/%s/error.txt" , dirName ), comp .Err .Error ())
240+ if comp .Err != nil {
241+ err = writeErrorResult (zw , fmt .Sprintf ("components/%s/error.txt" , dirName ), comp .Err .Error ())
242+ if err != nil {
243+ return fmt .Errorf ("error while writing error result for component %s: %w" , comp .ComponentID , err )
244+ }
245+ } else {
246+ for _ , res := range comp .Results {
247+
248+ filePath := fmt .Sprintf ("components/%s/%s" , dirName , res .Filename )
249+ resFileWriter , err := zw .CreateHeader (& zip.FileHeader {
250+ Name : filePath ,
251+ Method : zip .Deflate ,
252+ Modified : ts ,
253+ })
244254 if err != nil {
245- return fmt .Errorf ("error while writing error result for component %s: %w" , comp . ComponentID , err )
255+ return fmt .Errorf ("error creating .zip header for %s: %w" , res . Filename , err )
246256 }
247- } else {
248- for _ , res := range comp .Results {
249-
250- filePath := fmt .Sprintf ("components/%s/%s" , dirName , res .Filename )
251- resFileWriter , err := zw .CreateHeader (& zip.FileHeader {
252- Name : filePath ,
253- Method : zip .Deflate ,
254- Modified : ts ,
255- })
256- if err != nil {
257- return fmt .Errorf ("error creating .zip header for %s: %w" , res .Filename , err )
258- }
259- err = writeRedacted (errOut , resFileWriter , filePath , res )
260- if err != nil {
261- return fmt .Errorf ("error writing %s in zip file: %w" , res .Filename , err )
262- }
257+ err = writeRedacted (errOut , resFileWriter , filePath , res )
258+ if err != nil {
259+ return fmt .Errorf ("error writing %s in zip file: %w" , res .Filename , err )
263260 }
264261 }
265-
266262 }
267263 // create unit diags
268- for _ , ud := range units {
269- unitDir := strings .ReplaceAll (strings .TrimPrefix (ud .UnitID , ud .ComponentID + "-" ), "/" , "-" )
270- _ , err := zw .CreateHeader (& zip.FileHeader {
271- Name : fmt .Sprintf ("components/%s/%s/" , dirName , unitDir ),
272- Method : zip .Deflate ,
273- Modified : ts ,
274- })
275- if err != nil {
276- return fmt .Errorf ("error creating .zip header for unit directory: %w" , err )
277- }
278- // check for unit-level errors
279- if ud .Err != nil {
280- err = writeErrorResult (zw , fmt .Sprintf ("components/%s/%s/error.txt" , dirName , unitDir ), ud .Err .Error ())
281- if err != nil {
282- return fmt .Errorf ("error while writing error result for unit %s: %w" , ud .UnitID , err )
283- }
284- continue
285- }
286- for _ , fr := range ud .Results {
287- filePath := fmt .Sprintf ("components/%s/%s/%s" , dirName , unitDir , fr .Filename )
288- w , err := zw .CreateHeader (& zip.FileHeader {
289- Name : filePath ,
264+ if units , ok := compDirs [dirName ]; ok {
265+ // check for component-level errors
266+ // create unit diags
267+ for _ , ud := range units {
268+ unitDir := strings .ReplaceAll (strings .TrimPrefix (ud .UnitID , ud .ComponentID + "-" ), "/" , "-" )
269+ _ , err := zw .CreateHeader (& zip.FileHeader {
270+ Name : fmt .Sprintf ("components/%s/%s/" , dirName , unitDir ),
290271 Method : zip .Deflate ,
291- Modified : fr . Generated ,
272+ Modified : ts ,
292273 })
293274 if err != nil {
294- return err
275+ return fmt . Errorf ( "error creating .zip header for unit directory: %w" , err )
295276 }
296- err = writeRedacted (errOut , w , filePath , fr )
297- if err != nil {
298- return err
277+ // check for unit-level errors
278+ if ud .Err != nil {
279+ err = writeErrorResult (zw , fmt .Sprintf ("components/%s/%s/error.txt" , dirName , unitDir ), ud .Err .Error ())
280+ if err != nil {
281+ return fmt .Errorf ("error while writing error result for unit %s: %w" , ud .UnitID , err )
282+ }
283+ continue
284+ }
285+ for _ , fr := range ud .Results {
286+ filePath := fmt .Sprintf ("components/%s/%s/%s" , dirName , unitDir , fr .Filename )
287+ w , err := zw .CreateHeader (& zip.FileHeader {
288+ Name : filePath ,
289+ Method : zip .Deflate ,
290+ Modified : fr .Generated ,
291+ })
292+ if err != nil {
293+ return err
294+ }
295+ err = writeRedacted (errOut , w , filePath , fr )
296+ if err != nil {
297+ return err
298+ }
299299 }
300300 }
301301 }
0 commit comments