@@ -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