github.com/tilotech/tilores-cli@v0.28.0/internal/pkg/step/packageziprename.go (about) 1 package step 2 3 import ( 4 "archive/zip" 5 "io" 6 "os" 7 "path" 8 ) 9 10 // PackageZipRename packages source file into target zip, the resulting zip contains the source file 11 // but named with newSourceName 12 func PackageZipRename(source string, target string, newSourceName string) Step { 13 return func() error { 14 sourceFile, err := os.Open(source) //nolint:gosec // reason: static path 15 if err != nil { 16 return err 17 } 18 defer sourceFile.Close() //nolint:gosec,errcheck // reason: opened for read 19 20 targetFile, err := os.Create(target) //nolint:gosec 21 if err != nil { 22 return err 23 } 24 defer targetFile.Close() //nolint:gosec,errcheck // reason: only applicable for error cases 25 26 zipWriter := zip.NewWriter(targetFile) 27 zipFile, err := zipWriter.Create(path.Base(newSourceName)) 28 if err != nil { 29 return err 30 } 31 _, err = io.Copy(zipFile, sourceFile) 32 if err != nil { 33 return err 34 } 35 err = zipWriter.Close() 36 if err != nil { 37 return err 38 } 39 40 return targetFile.Close() 41 } 42 }