@@ -34,8 +34,16 @@ func CreateTemporaryRepository(sourcePath, repoName, arch string) (repoPath, ser
3434 return "" , "" , nil , fmt .Errorf ("failed to get absolute path of source directory: %w" , err )
3535 }
3636
37- if _ , err := os .Stat (sourcePath ); os .IsNotExist (err ) {
38- return "" , "" , nil , fmt .Errorf ("source directory does not exist: %s" , sourcePath )
37+ sourceInfo , err := os .Stat (sourcePath )
38+ if err != nil {
39+ if os .IsNotExist (err ) {
40+ return "" , "" , nil , fmt .Errorf ("source directory does not exist: %s" , sourcePath )
41+ }
42+ return "" , "" , nil , fmt .Errorf ("failed to stat source directory %s: %w" , sourcePath , err )
43+ }
44+
45+ if ! sourceInfo .IsDir () {
46+ return "" , "" , nil , fmt .Errorf ("source path is not a directory: %s" , sourcePath )
3947 }
4048
4149 // Check if source contains DEB files
@@ -120,18 +128,29 @@ func CreateTemporaryRepository(sourcePath, repoName, arch string) (repoPath, ser
120128 os .RemoveAll (tempRepoPath )
121129 return "" , "" , nil , fmt .Errorf ("failed to create Packages.gz file: %w" , createErr )
122130 }
123- gzWriter := gzip .NewWriter (gzFile )
124- if _ , writeErr := gzWriter .Write (packagesData ); writeErr != nil {
125- gzFile .Close ()
126- os .RemoveAll (tempRepoPath )
127- return "" , "" , nil , fmt .Errorf ("failed to write Packages.gz: %w" , writeErr )
128- }
129- if closeErr := gzWriter .Close (); closeErr != nil {
130- gzFile .Close ()
131+ if gzipErr := func () (retErr error ) {
132+ defer func () {
133+ if closeErr := gzFile .Close (); closeErr != nil && retErr == nil {
134+ retErr = fmt .Errorf ("failed to close Packages.gz file: %w" , closeErr )
135+ }
136+ }()
137+
138+ gzWriter := gzip .NewWriter (gzFile )
139+ defer func () {
140+ if closeErr := gzWriter .Close (); closeErr != nil && retErr == nil {
141+ retErr = fmt .Errorf ("failed to finalize Packages.gz: %w" , closeErr )
142+ }
143+ }()
144+
145+ if _ , writeErr := gzWriter .Write (packagesData ); writeErr != nil {
146+ return fmt .Errorf ("failed to write Packages.gz: %w" , writeErr )
147+ }
148+
149+ return nil
150+ }(); gzipErr != nil {
131151 os .RemoveAll (tempRepoPath )
132- return "" , "" , nil , fmt . Errorf ( "failed to finalize Packages.gz: %w" , closeErr )
152+ return "" , "" , nil , gzipErr
133153 }
134- gzFile .Close ()
135154
136155 // Compute SHA256 checksums and file sizes for the Release file
137156 packagesHash , hashErr := computeFileSHA256 (packagesPath )
0 commit comments